谷歌云存储多部分图像上传(NodeJS)
Posted
技术标签:
【中文标题】谷歌云存储多部分图像上传(NodeJS)【英文标题】:Google Cloud Storage Multipart Image upload (NodeJS) 【发布时间】:2022-01-09 19:05:50 【问题描述】:我正在将应用程序从 Azure 存储迁移到 Google 云存储。
我的上传API如下:
let uploadFile = async (req, res) =>
try
var form = new multiparty.Form();
form.on("part", async function (part)
if (part.filename)
let filnam = part.filename.replace(/\s/g, "");
var size = part.byteCount - part.byteOffset;
container = containerName(part.headers["content-type"]);
blobName = fileName(filnam);
let fileDetails = await GCSService.uploadFile(
container,
part,
blobName,
part.headers["content-type"],
part.filename
)
Response.success(res, res, status.HTTP_OK, fileDetails);
);
form.parse(req);
catch (err)
console.log("Error Uploading File: ", err);
throw new Error("file upload error");
;
使用 Azure 存储,我可以使用 uploadStream
函数直接上传分段,
await blockBlobClient.uploadStream(part, 4 * 1024 * 1024, 20,
blobHTTPHeaders:
blobContentType: mimetype
,
onProgress: (ev) => console.log(ev)
);
const blobClient = containerClient.getBlobClient(blobName);
但是当我尝试使用 Google Cloud Storage createWriteStream
进行相同操作时,它会上传文件,但文件是 0 字节。
bucket.file(blobName).createWriteStream(
resumable: false
).on('finish', async () => );
谁能指出正确的 Google Cloud Storage 实施方向?
谢谢
【问题讨论】:
【参考方案1】:尝试使用来自 GCS API reference 的示例:
fs.createReadStream('/Users/stephen/Photos/birthday-at-the-zoo/panda.jpg')
.pipe(file.createWriteStream())
.on('error', function(err) )
.on('finish', function()
// The file upload is complete.
);
another Stack thread 中也讨论了类似的问题。
【讨论】:
以上是关于谷歌云存储多部分图像上传(NodeJS)的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 multer 和 NodeJS 将图像上传到 GCS 存储桶?