我在使用appengine(java / jersey)时遇到了多个问题,但是现在我坚持通过分段上传文件。

我已阅读以下答案:https://stackoverflow.com/a/31325201

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

java.lang.SecurityException: Unable to create temporary file


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

谢谢!

最佳答案

您必须使用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

08-18 14:44
查看更多