通过 google-api-javascript-client 库通过批处理文件上传获取 404 错误

Posted

技术标签:

【中文标题】通过 google-api-javascript-client 库通过批处理文件上传获取 404 错误【英文标题】:get 404 error by batch file upload via google-api-javascript-client library 【发布时间】:2013-10-29 15:44:45 【问题描述】:

我正在尝试将整个文件夹上传到谷歌驱动器。

我可以通过一个请求成功上传一个文件。

但我在上传整个文件时遇到 rateLimitExceed 错误。

所以,我尝试使用批处理请求。

使用批处理请求创建文件夹已成功完成。

但是当我尝试通过批量请求上传文件时,它返回 404 错误。 (未找到)

这是谷歌驱动的错误吗? 如果是这样,我应该延迟上传很多文件吗?

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

        var contentType = 'text/plain';
        var metadata = 
            'title': 'test1.txt',
            'mimeType': contentType                 
        ;

        var base64Data = btoa('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
        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;

        var request = gapi.client.request(
           'path': '/upload/drive/v2/files',
           'method': 'POST',
           'params': 'uploadType': 'multipart',
           'headers': 
             'Content-Type': 'multipart/mixed; boundary="' + boundary + '"'
           ,
           'body': multipartRequestBody);

        var httpBatch = gapi.client.newHttpBatch();
        httpBatch.add(request, 
            callback: function(resp, rawResp)
                console.log(rawResp);
            
        );
        httpBatch.execute(function(resp, rawResp)
            console.log(rawResp)
        );

错误在这里:

"id":"1171148984","result":false 

"gapiRequest":"data":"body":"--batch_YZmy6yr9vIk=_ABqi-xumfFQ=\r\nContent-Type: application/http\r\nContent-ID: <response-1171148984>\r\n\r\nHTTP/1.1 404 Not Found\r\nContent-Type: text/html; charset=UTF-8\r\nDate: Mon, 21 Oct 2013 07:53:20 GMT\r\nExpires: Mon, 21 Oct 2013 07:53:20 GMT\r\nCache-Control: private, max-age=0\r\nContent-Length: 9\r\n\r\nNot Found\r\n--batch_YZmy6yr9vIk=_ABqi-xumfFQ=--\r\n","headers":"pragma":"no-cache","date":"Mon, 21 Oct 2013 07:53:20 GMT","server":"GSE","content-type":"multipart/mixed; boundary=batch_YZmy6yr9vIk=_ABqi-xumfFQ=","cache-control":"no-cache, no-store, max-age=0, must-revalidate","content-length":"349","expires":"Fri, 01 Jan 1990 00:00:00 GMT","status":200,"statusText":"OK" 

【问题讨论】:

批处理(即使它有效)也无济于事。您仍然会收到速率限制错误。见***.com/questions/18578768/…。现在唯一的解决方案是减慢插入速度以避免 403 错误。我发现需要延迟 2-3 秒。 【参考方案1】:

无法批量上传,请单独运行上传请求。

【讨论】:

以上是关于通过 google-api-javascript-client 库通过批处理文件上传获取 404 错误的主要内容,如果未能解决你的问题,请参考以下文章

下拉框多选框单选框 通过TagHelper绑定数据

酶:测试孩子通过安装渲染失败,但通过浅时通过

java是通过值传递,也就是通过拷贝传递——通过方法操作不同类型的变量加深理解

通过代码进行 Spring 配置与通过注释进行配置

如何理解“不要通过共享内存来通信,而应该通过通信来共享内存”?

通过邮递员通过 API 使用 Rails 主动存储上传文件(.pdf、.jpg 等)? (不通过 Rails 视图)