Node.js:通过REST API进行多部分文件上传

3
我想使用multi-part方法上传调用REST端点。
具体来说,我在查看此API:Google Cloud Storage: Objects: insert 我确实了解使用multer,但我没有找到任何完整的示例来展示如何执行此操作。
是否有人可以帮助我?
2个回答

2

https://cloud.google.com/nodejs/getting-started/using-cloud-storage#uploading_to_cloud_storage

这是如何使用multer将单个图像上传到Google Cloud Storage的好例子。使用multer为每个文件创建文件流(storage: multer.memoryStorage()),并通过在回调函数中将文件流发送到您的GCS存储桶来处理文件流。

然而,此链接仅显示了一个图像的示例。如果要上传一组图像,请创建一个for循环,在其中为请求中的每个文件创建一个流,但只在for循环结束后放置next()函数。如果在每个循环周期中保留next();,则会出现错误:Error: Can't set headers after they are sent.


0

这里有一个使用nodejs客户端库multer上传文件的示例。您可以修改此示例并设置多部分选项:

  1. 下载示例代码并进入文件夹:

    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples/

    cd nodejs-docs-samples/appengine/storage

  2. 编辑app.yaml文件并包含您的存储桶名称:

    GCLOUD_STORAGE_BUCKET: YOUR_BUCKET_NAME

  3. 然后在源代码中,您可以根据Objects: insert示例修改publicUrl变量:

    const publicUrl = format(`https://www.googleapis.com/upload/storage/v1/b/${bucket.name}/o?uploadType=multipart`);
    
  4. 为您的服务帐号下载密钥文件并设置环境变量:

    • 转到GCP控制台中的创建服务帐号密钥页面。
    • 从服务帐号下拉列表中选择新服务帐号。
    • 将名称输入到“服务帐号名称”字段中。
    • 从角色下拉列表中选择项目>所有者。
    • 单击“创建”。一个包含您的密钥的JSON文件将下载到您的计算机上。最后导出环境变量:

    export GOOGLE_APPLICATION_CREDENTIALS=/path/to/your/key/file

完成上述步骤后,您就可以运行npm start命令,进入应用程序的前端并上传您的文件:

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接