首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用request包多部分/混合请求google驱动器大容量删除

使用request包多部分/混合请求google驱动器大容量删除
EN

Stack Overflow用户
提问于 2021-12-16 11:35:11
回答 1查看 78关注 0票数 0

我试图使用rest从google驱动器中批量删除文件。因此,我正在为批量删除请求制定框架--我能够使用类似的请求框架方法用原始XMLHttpRequest批量删除Google上的文件实现删除,但我试图做到这一点,而不是在请求对象中发送多部分数组而不发送主体。我得到了错误400与以下响应体

代码语言:javascript
运行
复制
<HTML>
<HEAD>
<TITLE>Bad Request</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Bad Request</H1>
<H2>Error 400</H2>
</BODY>
</HTML>

这是我的请求对象,它是失败的

代码语言:javascript
运行
复制
const _multipart = []
arrayOfFileIds.forEach((current) => {
    const obj = {
        body: 'Content-Type: application/http\n\n' +
            'DELETE https://www.googleapis.com/drive/v3/files/' +
            current + '\nAuthorization: Bearer ' + authToken
    }
    _multipart.push(obj)
})

const requestOptions = {
    url: 'https://www.googleapis.com/batch/drive/v3',
    method: 'POST',
    headers: {
        'Content-Type': 'multipart/mixed'
    },
    multipart: _multipart
}

下面的request对象正在工作

代码语言:javascript
运行
复制
const boundary = 'END_OF_PART'
const separation = '\n--' + boundary + '\n'
const ending = '\n--' + boundary + '--'
const requestBody = arrayOfFileIds.reduce((accum, current) => {
    accum += separation +
        'Content-Type: application/http\n\n' +
        'DELETE https://www.googleapis.com/drive/v3/files/' +
        current +
        '\nAuthorization: Bearer ' + authToken
    return accum
}, '') + ending


const requestOptions = {
    url: 'https://www.googleapis.com/batch/drive/v3',
    method: 'POST',
    headers: {
        'Content-Type': 'multipart/mixed; boundary=' + boundary

    },
    body: requestBody
    multipart: _multipart
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-16 12:43:29

修改要点:

  • 访问令牌可以包含在请求头中。
  • 将每个批处理请求的Content-Typebody中删除。

当这些要点反映到您的脚本中时,如下所示。

修改脚本:

代码语言:javascript
运行
复制
const _multipart = [];
arrayOfFileIds.forEach((current) => {
  const obj = {
    "Content-Type": "application/http",
    body: "DELETE https://www.googleapis.com/drive/v3/files/" + current + "\n",
  };
  _multipart.push(obj);
});

const requestOptions = {
  url: "https://www.googleapis.com/batch/drive/v3",
  method: "POST",
  headers: {
    "Content-Type": "multipart/mixed",
    Authorization: "Bearer " + authToken,
  },
  multipart: _multipart,
};

注意:

  • 当我测试上面修改的脚本时,没有发生错误。文件可以删除。当您测试上述脚本时,当发生错误时,请再次确认脚本和访问令牌。

参考资料:

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70378312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档