我在使用appengine(java / jersey)时遇到了多个问题,但现在我不得不通过multipart上传文件了。
我读过这个答案:https://stackoverflow.com/a/31325201
它适用于localhost,但是当我上传到appengine时,它在启动服务器时显示相同的错误:
java.lang.SecurityException: Unable to create temporary file
有谁知道它为什么会这样?
谢谢!
答案 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