如何在通过 appengine 上传到 google-cloud-storage 时将元数据添加到文件

how to add metadata to file when uploading to google-cloud-storage via appengine

我正在按照 docs

通过应用引擎将文件上传到 GCS

(代码取自here

public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
  GcsFileOptions instance = GcsFileOptions.getDefaultInstance();
  GcsFilename fileName = getFileName(req);
  GcsOutputChannel outputChannel;
  outputChannel = gcsService.createOrReplace(fileName, instance);
  copy(req.getInputStream(), Channels.newOutputStream(outputChannel));
}

复制方法如下:

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();
    }
}

现在我想将此元数据添加到文件中

metadata = "{timestamp:\"01/12/2016\", blabla: 111}"

如何使用上面的代码添加此元数据?

使用 [=h11=] 代替 GcsFileOptions.getDefaultInstance();

public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
  GcsFileOptions instance = new Builder().addUserMetadata("timestamp", "01/12/2016").build();
  GcsFilename fileName = getFileName(req);
  GcsOutputChannel outputChannel;
  outputChannel = gcsService.createOrReplace(fileName, instance);
  copy(req.getInputStream(), Channels.newOutputStream(outputChannel));
}