无法将内存缓冲区中的Excel文件上传至GCS存储桶
问题描述
我通过用户上传的文件构建了一个缓冲区,代码如下:
const chunks = []; for await (const chunk of data) { chunks.push(chunk); } const fullData = Buffer.concat(chunks); const gcsUrl = await uploadInputFile({ buffer: fullData, filename: `myfile.xlsx`, });
我希望将这个内存中的缓冲区上传至GCS存储桶,上传函数代码如下:
const uploadInputFile = async ({ buffer, filename }: { buffer: Buffer; filename: string }) => { await storage .bucket("bucket-name") .file(`input_files/${filename}`) .save(buffer, {resumable: false}); return file.cloudStorageURI.href; };
我尝试了为save函数添加不同配置来上传Excel文件(理论上无需指定内容类型即可上传任意文件):
.save(buffer, {resumable: false}).save(buffer, {resumable: false, contentType: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"})- 不添加任何配置
.save(buffer)
但客户端库尝试POST文件时出现如下错误:
<p><b>400.</b> <ins>That’s an error.</ins> <p>Your client has issued a malformed or illegal request. <ins>That’s all we know.</ins>
而使用相同逻辑上传PDF文件并指定内容类型时可以成功:
await storage .bucket("docflow-files") .file(`input_files/${filename}`) .save(buffer, {resumable: false, contentType: "application/pdf"});
内容的提问来源于stack exchange,提问作者Ali Sajjad Rizavi
相关产品推荐
相关产品推荐

