用户上传了一些我存储在Google云端存储中的文件。现在用户回来了,想要从我的应用程序显示的列表中下载文件。他/她单击链接并调用servlet。这个servlet背后的代码是什么样的? 此外,我不想公开对象。 我的样子如何: 有更简单的方法吗? 感谢。
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();
}
}
}
答案 0 :(得分:1)
您可以使用blobstoreService.createGsBlobKey
blobKey
使用blobstoreService.serve(blobKey, res)
将其作为常规blobstore文件提供
https://developers.google.com/appengine/docs/java/blobstore/overview#Serving_a_Blob