java - Google Cloud Storage 返回 404,即使文件是使用 BlobstoreService 从 GAE 托管应用程序上传的

标签 java google-app-engine google-cloud-storage

我在 GCS 中遇到问题。在我的应用程序中,我尝试使用带有 appengine sdk 1.9.0 的 BlobstoreService.generateUploadUrl() 从托管在 Google App Engine 上的应用程序将图像上传到 GCS。

我正在使用以下代码生成上传 url:

    public Status getUploadURL(@Named("uploadUrl") String uploadUrl, @Named("bucket") String bucket){
      BlobstoreService blobStoreService = BlobstoreServiceFactory.getBlobstoreService();
      UploadOptions uploadOptions = UploadOptions.Builder.withGoogleStorageBucketName(bucket);
      return new Status(blobStoreService.createUploadUrl(uploadUrl, uploadOptions));
    }

使用上述代码获取上传 URL 后,我在上传表单操作中设置此 URL:

    <form id="uploadForm" 
     action="https://vibhoretest.appspot.com/_ah/upload/AMmfu6aV-O5cQ_eotQksnMP8NybW8Rei7ZYx2nQxpLN3Aph5-hnxriBHb2BRdfjYqusLER41UWvLp48KxaNiJJFwokpY-ClnmXZgNLuKgKvGgf4Cr-G-YomXmxJ_2055M-PUDmhnfuZOmw6BveexJHQh4oibwA5c5g/ALBNUaYAAAAAU4YMDlvwZRO4XLFDZbTwRrg9MuGI5ygJ/" 
     method="post" enctype="multipart/form-data">
      <input type="hidden" name="key" value="${filename}" />
      <input type="hidden" name="success_action_status" value="201" />
      <input type="hidden" name="x-goog-acl" value="public-read" />
      <input type="file" name="file">
      <input type="submit" value="Upload">
    </form>

提交此表单时出现以下错误:

当我提交表单时,图像正在上传并能够在存储桶中找到,但也在 firefox firbug 控制台中获得 404,如下所示:

“网络错误:404 未找到 - https://vibhoretest.appspot.com/_ah/upload/AMmfu6aV-O5cQ_eotQksnMP8NybW8Rei7ZYx2nQxpLN3Aph5-hnxriBHb2BRdfjYqusLER41UWvLp48KxaNiJJFwokpY-ClnmXZgNLuKgKvGgf4Cr-G-YomXmxJ_2055M-PUDmhnfuZOmw6BveexJHQh4oibwA5c5g/ALBNUaYAAAAAU4YMDlvwZRO4XLFDZbTwRrg9MuGI5ygJ/

最佳答案

文件有多大?确保设置重试参数,以提供足够的响应时间:

https://developers.google.com/appengine/docs/python/googlecloudstorageclient/retryparams_class

另外,是否需要 60 秒才能获得 404 响应?

关于java - Google Cloud Storage 返回 404,即使文件是使用 BlobstoreService 从 GAE 托管应用程序上传的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24042560/

相关文章:

java - 当我在模型类中添加 Handler 对象时,GSON 对象序列化中断

java - 如何从 FileInputStream 获取 EOFException

java - 自加入谷歌应用程序引擎(java)

java - 谷歌应用引擎 : custom authentication

android - 从 App Engine 将图像数据发送到 Android 应用程序

java - 无法从 Google Cloud Storage 返回对象名称

java - 下载到内存后如何访问文件,Firebase?

java - 使用invokeLater 和不使用invokeLater 显示JFrame 有什么区别?

google-app-engine - 如何在谷歌应用引擎管理控制台中查询非空值

java - Scala 中的贝叶斯网络