gpt4 book ai didi

java - GAE - 谷歌云存储 - 上传(acl : read-public and get the public shared url)

转载 作者:行者123 更新时间:2023-11-30 11:39:49 25 4
gpt4 key购买 nike

目标是上传大文件(视频)并获取它们的公共(public)共享 url。

看起来很简单,但我花了一天多的时间研究文档,但没有找到任何示例。

我得到以下代码来上传到谷歌商店,效果很好,但我想在 url 中添加选项来制作文件的 acl:“public-read”。在 jsp 中上传之前或在 servlet 中上传之后。

<%@ page import="com.google.appengine.api.blobstore.BlobstoreServiceFactory" %>
<%@ page import="com.google.appengine.api.blobstore.BlobstoreService" %>
<%@ page import="com.google.appengine.api.blobstore.UploadOptions" %>
<%
BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();

String uploadUrl = blobstoreService.createUploadUrl("/ajax?act=user&act2=video_upload", UploadOptions.Builder.withGoogleStorageBucketName("vidaao"));

%>

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Upload Page</title>
</head>
<body>
<h1>Upload v3</h1>

<form name="form1" id="form1" action="<% out.print(uploadUrl); %>" method="post" enctype="multipart/form-data" target="upload_iframe">
<input type="hidden" name="hiddenfield1" value="ok">
Files to upload:
<br/>
<input type="file" name="myFile">
<br/>
<button type="submit">Send</button>
</form>
<iframe id="upload_iframe" name="upload_iframe"></iframe>

</body>

</html>

然后在我的 servlet 中某处重定向 url 以 blobkey 的生成结束

public String upload(HttpServletRequest req, HttpServletResponse res) throws Exception{

Map<String, BlobKey> blobs = blobstoreService.getUploadedBlobs(req);
BlobKey blobKey = blobs.get("myFile");

if (blobKey == null) {

throw new Exception("Error file not uploaded");

}

//TODO: HERE get the public shared url of the file

return " blob key = " + blobKey.getKeyString();

}

在这一步,如果可能的话,我希望获得 Google Cloud Storage 的公共(public)共享 URL。(我无法通过 servlet 提供文件,因为它可能会超时)

最佳答案

默认情况下,使用 createUploadUrl 上传到 bigstore 的文件是私有(private)的。您需要自己修改 ACL 才能将其公开。

此外,如果您更愿意这样做而不是公开 blob,则可以使用 serve() 从您的 servlet 从 Google 存储返回无限大小的 blob,而无需担心超时。

关于java - GAE - 谷歌云存储 - 上传(acl : read-public and get the public shared url),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13059594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com