gpt4 book ai didi

java - Google App Engine for Java 和 Google 云存储

转载 作者:太空宇宙 更新时间:2023-11-04 08:13:09 24 4
gpt4 key购买 nike

我有一个基于 Google App Engine (Java) 的应用程序,它将文件数据存储在 Google Cloud 存储中。

此文件下载 servlet 在我的本地 eclipse 环境中工作正常,并且当部署到 appspot 域时,这适用于简单的文本文件,但适用于任何文档(在新选项卡中的浏览器中显示),但如果我尝试使用任何其他二进制文件(doc、jpeg、gif 等)似乎什么也不做,服务器端也不会抛出任何错误。我直接检查了 Google Cloud 存储中的文件夹,文件存储正确并且能够直接访问,但无法通过应用引擎执行此操作。

如果我遗漏了什么,可以告诉我吗?

下面的代码片段,

         try {
FileService newfileService = FileServiceFactory.getFileService();
AppEngineFile file = new AppEngineFile(cloudpath) ;
FileReadChannel channel = newfileService.openReadChannel(file, false);
BufferedInputStream bis = new BufferedInputStream(Channels.newInputStream(channel));
BufferedOutputStream bos = new BufferedOutputStream(resp.getOutputStream());
resp.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();
}

最佳答案

您应该使用 BlobstoreService.serve 方法,而不是尝试自己流式传输文件。这需要小心或流式传输,并且可以用于任何大小的文件。

类似于

BlobstoreService blobService = BlobstoreServiceFactory.getBlobstoreService();
blobService.serve(blobService.createGsBlobKey(cloudpath), resp);

关于java - Google App Engine for Java 和 Google 云存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10874659/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com