0

I'm trying to upload whole folder to google drive.

I could successfully upload one file by one request.

But I met rateLimitExceed error while upload whole files.

So, I tried to use batch request.

Creating folders with batch request are successfully done.

but when I trying to upload file by batch request, it returns 404 error. ( Not Found )

Is this google drive's bug? If so, should I do time delay for upload many files?

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

error is here:

{"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"}}} 
Spudley
  • 166,037
  • 39
  • 233
  • 307
dongseok0
  • 737
  • 2
  • 7
  • 18
  • batching (even if it worked) would not have helped. You would still get rate limit errors. See http://stackoverflow.com/questions/18578768/403-rate-limit-on-insert-sometimes-succeeds . The only solution right now is to slow your inserts down to avoid the 403 errors. I find that a delay of 2-3 seconds is required. – pinoyyid Oct 21 '13 at 13:04

1 Answers1

0

Uploading cannot be batched, please run the upload requests individually.

Burcu Dogan
  • 9,153
  • 4
  • 34
  • 34