我在使用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