在我的项目中,我需要能够在服务器上上传一些文件并按名称获取文件。我想将它们保存在Google Cloud Storage
中,我的提交表单如下所示
<%
UploadOptions op = UploadOptions.Builder.withGoogleStorageBucketName("myDefaultBucket");
%>
<form action="<%= blobstoreService.createUploadUrl("/upload", op) %>" method="post" enctype="multipart/form-data">
<input type="file" name="fileToUpload">
<input type="submit" value="submit">
</form>
但是,在
Google Cloud Storage
中的文件具有与我上载时不同的名称(例如,我上载了文件file.txt
,并且在存储桶中的名称是L2FwcGhvc3RpbmdfcHJvZC9ibG9icy9BRW5C...
)。基本上,我只需要在服务器上保存一些文件
file.txt
,然后将其命名为file.txt
。 最佳答案
您可以将此表单发布到您自己的servlet中,而不是直接上传到Cloud Storage。然后,使用存储桶和已提交文件的名称创建文件名,然后将此文件保存到Cloud Storage。
private final GcsService gcsService =
GcsServiceFactory.createGcsService(RetryParams.getDefaultInstance());
GcsOutputChannel outputChannel =
gcsService.createOrReplace(GcsFilename(bucketName, uploadedFileName), GcsFileOptions.getDefaultInstance());