繁体   English   中英

如何修复Mime零件错误为0的无效零件请求

[英]How to fix Invalid multipart request with 0 mime parts error

我正在尝试使用nodejs express将文件上传到Google驱动器,从邮递员发送发帖请求,我收到错误消息“无效的分段请求,其中mime部分为0。”问题在请求主体内,我认为,任何想法都将不胜感激这个问题或任何建议,谢谢。

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 });
    }
});

我认为您的脚本几乎是正确的,并且您的脚本通过修改以下3点来起作用。

修改要点:

  1. 使用Drive API v3时,请使用name属性代替title
  2. 可以通过new Buffer(data).toString('base64')检索文件的base64Data
  3. 当使用json: true of options ,错误的Invalid multipart request with 0 mime parts.的错误Invalid multipart request with 0 mime parts. 发生。 请删除此。

修改后的脚本:

请进行如下修改。

1:

从:
 title: file.name, 
至:
 name: file.name, 

2:

从:
 var base64Data = Buffer(data, 'base64'); 
至:
 var base64Data = new Buffer(data).toString('base64'); 

3:

请从options删除json: true

注意:

  • 修改后的脚本假定您的环境可以使用Drive API上传文件。 如果发生与API相关的错误,请确认是否启用Drive API。 另外,请确认访问令牌中包含的范围。
  • 我可以确认修改后的脚本可以将文件上传到Google云端硬盘。 因此,如果发生其他错误,则认为不是此脚本的另一部分是原因。

参考文献:

如果这些修改对您的情况没有帮助,我深表歉意。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM