【发布时间】:2019-10-26 18:12:49
【问题描述】:
我正在尝试使用 签名 URL 将 base64 文件/图像上传到 Google 云存储。我的服务器端代码(NodeJS)是这样的:
let {Storage} = require('@google-cloud/storage');
storage = new Storage({
projectId,
keyFilename: gcloudServiceAccountFilePath,
});
function generateSignedUrl(){
const options = {
version: 'v4',
action: 'write',
expires: Date.now() + 15 * 60 * 1000, // 15 minutes
//contentType: 'application/octet-stream'
};
}
const [url] = await storage.bucket(gcloudBucket)
.file(`${fileRelativePath}`).getSignedUrl(options);
return url;
}
现在,当我尝试使用以下配置的 POSTMAN 时,
Request: PUT
URL: https://storage.googleapis.com/my-signed-url.. //generated from above code
Headers:
x-goog-acl: 'public-read'
Content-Type: 'image/jpeg'
Body:
raw : 'base64-file-conent'
我在 GCS 中上传的文件保持为 base64,文件大小也不同,正如您在存储中看到的那样。
第一张图片通过拖放直接上传到 GCS。
第二张图片是用 POSTMAN 上传的
不确定在通过邮递员上传文件时生成签名 URL 或任何标题时是否遗漏了什么。
谢谢:)
【问题讨论】:
标签: node.js google-cloud-storage postman pre-signed-url