- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
早些时候,我问了一个问题https://stackoverflow.com/questions/35581090/can-i-use-resumable-upload-for-gae-blobstore-api关于使用 Blobstire API 进行可恢复上传。对于我自己,我认为不可能使用 Blobstire API 实现断点续传。在这种情况下,我正在尝试使用 Java 客户端库实现 Google Cloud Storage。此刻我将我的视频文件下载到存储桶并提供视频。我的 servlet 看起来像谷歌示例
@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
GcsOutputChannel outputChannel =
gcsService.createOrReplace(getFileName(req), GcsFileOptions.getDefaultInstance());
copy(req.getInputStream(), Channels.newOutputStream(outputChannel));
}
private GcsFilename getFileName(HttpServletRequest req) {
String[] splits = req.getRequestURI().split("/", 4);
if (!splits[0].equals("") || !splits[1].equals("gcs")) {
throw new IllegalArgumentException("The URL is not formed as expected. " +
"Expecting /gcs/<bucket>/<object>");
}
return new GcsFilename(splits[2], splits[3]);
}
private void copy(InputStream input, OutputStream output) throws IOException {
try {
byte[] buffer = new byte[BUFFER_SIZE];
int bytesRead = input.read(buffer);
while (bytesRead != -1) {
output.write(buffer, 0, bytesRead);
bytesRead = input.read(buffer);
}
} finally {
input.close();
output.close();
}
}
现在我需要实现
我意识到,应该手动组织可恢复上传的服务器端,我的后端应该能够为我提供上传 block 的范围,并允许继续启动到 OutputChannel。
GcsOutputChannel 的文档说:
This class is serializable, this allows for writing part of a file, serializing the GcsOutputChannel deserializing it, and continuing to write to the same file. The time for which a serialized instance is valid is limited and determined by the Google Cloud Storage service
我没有足够的经验,所以这个问题可能很愚蠢:请有人告诉我如何序列化我的 GcsOutputChannel?我不知道在哪里可以保存包含序列化对象的文件。
顺便问一下,谁能知道 Google Cloud Storage 服务将序列化对象存储多长时间?
最佳答案
您可以使用任何 Java 序列化方式(通常使用 ObjectOutputStream)序列化您的 GcsOutputChannel。如果您在 AE 上运行,您可能希望将序列化的字节保存在数据存储中(作为数据存储 Blob)。看这个link了解如何将序列化对象与字节数组相互转换。
关于java - 使用 Google Cloud Storage 的客户端库可恢复上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35777738/
我试图允许用户使用Devise的可恢复选项重置密码。这似乎对我不起作用。 我扩展了Devise::PasswordsController,使其不使用应用程序布局。 class PasswordsCon
最近两周,我没有发布应用更新,却开始收到一堆数据库损坏的报告。下面是堆栈跟踪。 Android打不开数据库,我电脑上的sqlite-manager程序也打不开。但是,firefox 的 SQLite
我一直在试验 resumable.js,我对它在笔记本电脑上的内置 node.js 服务器的性能感到非常满意。但是,当我将它部署到 heroku 或 nodejitsu 并收到此错误时,它会在超过 1
我正在使用 YouTube Data API v3 从我的 Android 应用程序将视频上传到我的 YouTube 帐户.上传过程完美无缺。我需要的是,如果我的上传被中断(例如,由于互联网连接)
我是一名优秀的程序员,十分优秀!