具体来说,我在查看此API:Google Cloud Storage: Objects: insert 我确实了解使用multer,但我没有找到任何完整的示例来展示如何执行此操作。
是否有人可以帮助我?
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.
这里有一个使用nodejs客户端库和multer上传文件的示例。您可以修改此示例并设置多部分选项:
下载示例代码并进入文件夹:
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples/
cd nodejs-docs-samples/appengine/storage
编辑app.yaml
文件并包含您的存储桶名称:
GCLOUD_STORAGE_BUCKET: YOUR_BUCKET_NAME
然后在源代码中,您可以根据Objects: insert示例修改publicUrl
变量:
const publicUrl = format(`https://www.googleapis.com/upload/storage/v1/b/${bucket.name}/o?uploadType=multipart`);
为您的服务帐号下载密钥文件并设置环境变量:
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/your/key/file
完成上述步骤后,您就可以运行npm start
命令,进入应用程序的前端并上传您的文件: