2

ユーザーがいくつかのファイルをアップロードし、それをGoogleCloudStorageに保存しました。これで、ユーザーが戻ってきて、アプリが表示しているリストからファイルをダウンロードしたいと考えています。リンクをクリックすると、サーブレットが呼び出されます。そのサーブレットの背後にあるコードはどのようになりますか?また、オブジェクトを公開したくありません。ここで私のものはどのように見えるでしょう:これを行うためのより簡単な方法はありますか?ありがとう。

public class ServeGSObject extends HttpServlet {
    FileService fileService = FileServiceFactory.getFileService();
    public void doGet(HttpServletRequest request, HttpServletResponse response){
        String fullFilePath = request.getParameter("objectPath");
        AppEngineFile file = new AppEngineFile(fullFilePath);
        try {
            FileReadChannel channel = fileService.openReadChannel(file, false);
            BufferedInputStream bis = new BufferedInputStream(Channels.newInputStream(channel));
            BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream());
            response.setHeader("Content-Disposition", "inline;filename=\"" + file.getNamePart() + "");
            int b = 0;
            while((b = bis.read()) != -1) {
                bos.write(b);
            }
            bos.flush();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
4

1 に答える 1

1

blobKeyを使用して、GoogleStorageファイルに対応する一時ファイルを生成できますblobstoreService.createGsBlobKey

https://developers.google.com/appengine/docs/java/blobstore/overview#Serving_a_Blobを使用して、通常のblobstoreファイルのように提供しますblobstoreService.serve(blobKey, res)

于 2012-05-10T10:36:26.390 に答える