【问题标题】:Google Drive API multipart upload gets file corruptedGoogle Drive API 分段上传导致文件损坏
【发布时间】:2019-09-10 15:48:15
【问题描述】:

我一直在尝试使用 Google Drive API 上传文件,但遇到了一个问题,我似乎找不到答案。 上传带有文本文件的图像时会发生这种情况,似乎没问题。

按照此处的文档:https://developers.google.com/drive/api/v3/manage-uploads 我需要形成这样的请求

我尝试过 POSTMAN 或 Salesforce Apex,但遇到了同样的问题。

我正在发送编码为 Base64 的图像,但图像在 Google Drive 端没有被解码,所以问题是没有预览并且无法打开文件。如果我下载文件并在文本编辑器中打开它,内容就是文本。

这是从 VS Code 打开的图片

【问题讨论】:

    标签: google-api google-drive-api postman multipart


    【解决方案1】:

    我认为您正在尝试上传 base64 数据。那么这个修改怎么样呢?

    修改后的请求正文:

    POST https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart HTTP/1.1
    Authorization: Bearer [YOUR_AUTH_TOKEN]
    Content-Type: multipart/related; boundary=foo_bar_baz
    Content-Length: [NUMBER_OF_BYTES_IN_ENTIRE_REQUEST_BODY]
    
    --foo_bar_baz
    Content-Type: application/json; charset=UTF-8
    
    {
      "name": "myObject"
    }
    
    --foo_bar_baz
    Content-Type: image/jpeg
    Content-Transfer-Encoding: base64   <--- Added this.
    
    [JPEG_DATA]
    --foo_bar_baz--
    
    • 请在数据部分添加Content-Transfer-Encoding: base64

    参考:

    如果这没有解决您的问题,我深表歉意。

    【讨论】:

    • 就是这样,在阅读您的答案之前通过手动上传到谷歌驱动器并检查控制台中的请求找到它。如果将其包含在 GDrive 文档本身中会很好。那会为我节省很多时间。
    • 我遇到的另一个问题是换行符。如果您添加一个预期之外的额外换行符,它会破坏所有内容,并且不会解码 base64 数据,而是存储一个文本文件
    • @Federico Giust 感谢您的回复。是的。我认同。当我寻找与此相关的文件时,我没有找到它。我认为当添加这样的文档时,它将对用户有用。而且,换行符对于请求正文很重要。
    猜你喜欢
    • 2020-06-18
    • 1970-01-01
    • 2017-10-10
    • 1970-01-01
    • 2016-02-07
    • 2020-03-10
    • 2021-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多