【发布时间】:2013-10-15 05:52:13
【问题描述】:
我正在谷歌应用引擎上用 java 创建一个应用程序,用户可以在其中录制他的声音并上传到服务器。 我在谷歌应用引擎中实现它并录制了音频并生成了具有 blob:http://xxx.xx 格式的 url。现在我想把它上传到谷歌应用引擎的 blob 商店。
如何存储这个生成的音频文件。请帮忙!!
【问题讨论】:
我正在谷歌应用引擎上用 java 创建一个应用程序,用户可以在其中录制他的声音并上传到服务器。 我在谷歌应用引擎中实现它并录制了音频并生成了具有 blob:http://xxx.xx 格式的 url。现在我想把它上传到谷歌应用引擎的 blob 商店。
如何存储这个生成的音频文件。请帮忙!!
【问题讨论】:
您可能想看看 Google Cloud Storage,它允许您直接提供上传的内容(可能使用您的自定义域),而无需 App Engine(如 Amazon S3)。
您可以使用BlobstoreService 中的createUploadUrl() 方法,这将允许用户直接将他们的文件上传到blobstore(之后执行用户指定的“加载处理程序”回调),或者用户可以上传到您的 App Engine 应用,然后使用 Google Cloud Storage Client Library 将 blob 写入 GCS。
使用云存储客户端库,您可以指定文件“路径”(它不是真正的路径)和访问控制规则。如果您愿意,这些文件可以作为 GCS 的静态内容提供。如果您想控制对上传文件的访问,您的 App Engine 应用可以使用相同的客户端库从 GCS 读取数据并将其返回给用户。
希望这会有所帮助。
【讨论】:
这个问题很模糊,但我会尽力回答。涉及许多概念和技术。 这可以是jsp文件(表单是用jQuery UI创建的):
<div id="audio-upload-form">
<form action="<%= blobstoreService.createUploadUrl("/uploadAudio") %>" method="post" enctype="multipart/form-data">
<fieldset>
<input type="file" name="fileblob" id="fileblob" class="text ui-widget-content ui-corner-all" required />
</fieldset>
<button class="upload-video" type="submit">Upload</button>
</form>
这可以是后端控制器(用 Java 和 Spring MVC 实现):
@SuppressWarnings("deprecation")
@RequestMapping(value = "/uploadAudio", method = RequestMethod.POST)
public String uploadAudioServlet(HttpServletRequest req, HttpServletResponse resp) throws IOException, JSONException {
Map<String, BlobKey> blobs = blobstoreService.getUploadedBlobs(req);
BlobKey blobKey = blobs.get("fileblob");
}
现在 blob 已上传并生成 blobKey。您可以使用此密钥创建可用于访问音频文件的 URL。我在想像一个可点击的音频文件列表,当你点击它们时,它们会在浏览器本身中播放。一旦您提供更多详细信息,我们将很乐意提供帮助。
【讨论】: