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

时间:2018-02-26 23:24:23

标签: node.js rest google-cloud-platform google-cloud-storage multer

我想上传调用多个部分的REST端点。

特别是,我正在查看此API:Google Cloud Storage: Objects: insert

我读过关于使用 multer 的内容,但是我没有找到任何完整的示例来向我展示如何执行此操作。

有人可以帮我吗?

2 个答案:

答案 0 :(得分:2)

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

^^这是如何使用multer将单个图像上传到Google云端存储的一个很好的示例。使用multer为每个文件创建文件流(存储:multer.memoryStorage()),并通过将文件流发送到回调中的GCS存储桶来处理文件流。

但是链接仅显示一个图像的示例。如果要创建一个图像数组,请创建一个for循环,在其中为请求中的每个文件创建一个流,但只在for循环结束后放置 next()函数。如果在每个循环周期中保留 next(); ,您将收到错误:错误:发送后无法设置标题。

答案 1 :(得分:0)

使用an examplenodejs client library上传文件时multer。您可以修改此示例并设置multipart选项:

  1. 将示例代码下载并cd到文件夹中:

    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

  5. 之后,您已准备好运行npm start并转到应用的前端并上传您的文件:

    enter image description here