【问题标题】:Upload a pdf from a url into Firestore storage bucket (Node JS)将 pdf 从 url 上传到 Firestore 存储桶(Node JS)
【发布时间】:2021-12-26 19:54:55
【问题描述】:

我正在向托管在 url 端点的 pdf 发出 get 请求(使用 axios),它返回如下所示的编码流:

'%PDF-1.4\n%����\n1 0 obj\n<</Creator (Chromium)\n/Producer (Skia/PDF m78)\n/CreationDate (D:20211115122641+00\'00\')\n/ModDate (D:20211115122641+00\'00\')>>\nendobj\n3 0 obj\n<</ca 1\n/BM /Normal>>\nendobj\n4 0 obj\n<</Type /XObject\n/Subtype /Image\n/Width 1245\n/Height 249\n/ColorSpace /DeviceRGB\n/BitsPerComponent 8\n/Filter /DCTDecode\n/ColorTransform 0\n/Length 35434>> stream\n����\u0000\u0010JFIF\u0000\u0001\u0001\u0000\u0000\u0001\u0000\u0001\u0000\u0000��\u0002(ICC_PROFILE\u0000\u0001\u0001\u0000\u0000\u0002\u0018\u0000\u0000\u0000\u0000\u0002\u0010\u0000\u0000mntrRGB XYZ 

然后我将使用以下内容将其上传到我们的存储桶:

const file = bucket.file(path);
const fileOptions = {contentType: 'application/pdf'};
return file.save(data, fileOptions)
    .then(() => {
        return {
            url: file.getSignedUrl({action: 'read', expires: expiryDate}),
            path
        }
    });

然而返回的 URL,打开时只显示一个空白 PDF(包含正确的页数)但没有任何内容。

从 url 下载和上传 PDF 到存储的最佳方式是什么?是这种方法(虽然我不确定我缺少什么),还是有办法上传我必须直接存储的 URL?

【问题讨论】:

  • 为了更好地@Mousu​​mi 的回复,请您回答以下问题:1. 您是否可以使用 Cloud Console 中的 URL 成功查看上传的文件? 2. 上传的 pdf 的“Type”属性是否在 Cloud Console 中显示为“application/pdf”?
  • 您的代码似乎不完整。你能分享整个代码吗?

标签: node.js google-cloud-firestore google-cloud-functions google-cloud-storage


【解决方案1】:

您使用的代码将内容类型设置为“application/pdf”。但是,尚不清楚您是如何从可能导致此行为的存储中下载对象的。

const file = bucket.file(path);
const fileOptions = {contentType: 'application/pdf'};
return file.save(data, fileOptions)

通常,File.createWriteStream() 方法用于将任意数据上传到文件。这方面的细节可以参考documentation

此外,您可以使用 Multer 从函数上传文件。 Multer 是一个用于处理 multipart/form-data 的 node.js 中间件,主要用于上传文件。 Multer 将一个主体对象和一个或多个文件对象添加到请求对象中。 body 对象包含表单文本字段的值,文件或文件对象包含通过表单上传的文件。您也可以参考documentation 了解有关 Multer 的更多信息。

【讨论】:

    猜你喜欢
    • 2018-02-07
    • 2018-08-31
    • 2020-10-17
    • 2019-06-14
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    • 2021-01-16
    相关资源
    最近更新 更多