分段上传到appengine

时间:2016-06-09 16:05:52

标签: java google-app-engine jersey-2.0

我在使用appengine(java / jersey)时遇到了多个问题,但现在我不得不通过multipart上传文件了。

我读过这个答案:https://stackoverflow.com/a/31325201

它适用于localhost,但是当我上传到appengine时,它在启动服务器时显示相同的错误:

java.lang.SecurityException: Unable to create temporary file

有谁知道它为什么会这样?

谢谢!

1 个答案:

答案 0 :(得分:1)

您必须使用Blobstore进行上传。

调用blobstoreService.createUploadUrl为用户填写的表单创建上传URL,在表单的POST完成后将应用程序路径传递给加载。

<body>
    <form action="<%= blobstoreService.createUploadUrl("/upload") %>" method="post" enctype="multipart/form-data">
        <input type="file" name="myFile">
        <input type="submit" value="Submit">
    </form>
</body>

然后在servlet中:

Map<String, List<BlobKey>> blobs = blobstoreService.getUploads(req);
List<BlobKey> blobKeys = blobs.get("myFile");

您可以直接将文件上传到存储,但可以将UploadOptions传递给.createUploadUrl

UploadOptions options = new UploadOptions.Builder().withGoogleStorageBucketName("mybucket");
String uploadUrl = blobstoreService.createUploadUrl("/upload", options)

按照文档https://cloud.google.com/appengine/docs/java/blobstore/#Java_Uploading_a_blob