如何解决与0 MIME部分错误无效的多请求

问题描述 投票:1回答:1

我想使用的NodeJS表达对Google云端硬盘上传文件,从邮递员发送POST请求,我得到了错误“0 MIME部分无效的多部分请求。”,问题是请求主体,我认为,任何想法将不胜感激解决内这个问题或任何建议,谢谢。

let file = req.files.form_doc_20;

var contentType = file.type || 'application/octet-stream';
let parentId = 'root';

const boundary = '-------314159265358979323846';
const delimiter = "\r\n--" + boundary + "\r\n";
const close_delim = "\r\n--" + boundary + "--";

var data = fs.readFileSync(file.path);
let metadata = {
    title: file.name,
    mimeType: contentType,
    parents: [parentId]
};

var base64Data = Buffer(data, 'base64');

var multipartRequestBody =
    delimiter +
    "Content-Type: application/json\r\n\r\n" +
    JSON.stringify(metadata) +
    delimiter +
    "Content-Type: " + contentType + "\r\n" +
    "Content-Transfer-Encoding: base64\r\n" +
    "\r\n" +
    base64Data +
    close_delim;

let options = {
    url: 'https://www.googleapis.com/upload/drive/v3/files',
    method: "POST",
    headers: {
        'Content-Type': "multipart/related; boundary=\"" + boundary + "\"",
        'Authorization': "Bearer " + req.body.token_configuration.access_token,
    },
    body: multipartRequestBody,
    qs: {
        fields: "id, name, mimeType, modifiedTime, size",
        uploadType: 'multipart'
    },
    json: true
};

helper.http_request(options, (err1, response) => {
    if (err1) {
        return res.json({ msg: 'Failed to upload the file.', error: response });
    }
    else {
        return res.json({ result: response });
    }
});
node.js file-upload google-api google-drive-sdk
1个回答
2
投票

我认为你的脚本几乎是正确的,你的脚本通过修改以下3点。

修改点:

  1. 当您使用驱动API第3版,请使用name代替title的财产。
  2. 该文件的base64Data可以通过new Buffer(data).toString('base64')检索。
  3. 当使用json: trueoptions,发生Invalid multipart request with 0 mime parts.的错误。请删除这一点。

修改后的脚本:

请修改如下。

1:

From:
title: file.name,
To:
name: file.name,

2:

From:
var base64Data = Buffer(data, 'base64');
To:
var base64Data = new Buffer(data).toString('base64');

3:

请从json: true删除options

注意:

  • 这个修改后的脚本假设您的环境可以使用驱动API上传文件。如果涉及到API错误发生时,请确认驱动器API是否已启用。还请确认范围包括在访问令牌。
  • 我可以确认,修改后的脚本可以将文件上传到谷歌驱动器。因此,如果出现其他错误,则认为这是不是这个脚本的另一部分的原因。

参考文献:

如果这些修改不适合你的情况是有用的,我道歉。

© www.soinside.com 2019 - 2024. All rights reserved.