2014-05-22 63 views
1

我正嘗試使用Google Drive API發送HTTP多部分請求以在Google雲端硬盤中插入文件。使用Google Drive API的Http多部分請求

我點擊以下鏈接:Multipart upload

但是,我得到一個Bad request error

下面是我所使用上面的文檔鏈接創建的請求字符串:

String content = '\r\n--' + boundary + '\r\n'; 
    content +='Content-Type: '+'application/json; charset=UTF-8'+'\r\n\r\n'; 
    content +='{' + '\r\n'; 
    content +='"title": "My File"'+'\r\n'; 
    content +='}'+'\r\n\r\n'; 
    content += '--'+boundary + '\r\n'; 
    content +='Content-Type: '+'text/plain'+'\r\n'; 
    content += EncodingUtil.base64Encode(b)+'\r\n'; 
    content += '-'+boundary+'-\r\n'; 

請能有人告訴我,我是缺少在這裏?

+0

你是這樣做的手動而不使用客戶端庫的任何原因? – DaImTo

回答

0

我有這個problm過,並試圖一些變化後,我終於達到了一個工作示例:

標題:

POST /upload/drive/v2/files?uploadType=multipart&access_token=ya29.CjAmA2j6eonCiROaNum-V1cWdFVH2vXpNiXAsXK6iLPu7K54tD4uNsmH-eEycMcnaBE HTTP/1.1 
Host: www.googleapis.com 
Accept: */* 
Content-Type: multipart/related; boundary="foo_bar_baz" 
Content-Length: 150 

記得在內容類型字段

添加邊界=「foo_bar_baz」

身體:

--foo_bar_baz 
Content-Type: application/json; charset=UTF-8 

{ 
    "title": "My File" 
} 

--foo_bar_baz 
Content-Type: text/txt 

JPEG data 
--foo_bar_baz-- 
1

我遇到了麻煩,這個爲好, 但如果你看一下代碼,谷歌驅動API在GitHub上: Github Drive API

請求參數接受媒體對象,它可以有一個身體和mime類型。

我正在使用一個服務帳戶,這可以讓你直接上傳文件到驅動器。

auth.getApplicationDefault(function(err, authClient) { 
    if (err) { 
    console.log('Authentication failed because of ', err); 
    return; 
    } 
    if (authClient.createScopedRequired && authClient.createScopedRequired()) { 
    var scopes = ['https://www.googleapis.com/auth/drive']; 
    authClient = authClient.createScoped(scopes); 
    } 
    var request = { 
    project: "YOUR_PROJECT", 
    auth: authClient, 
    resource: { 
    parents: ['blah'] 
    }, 
    media: { 
    body: 'hi', 
    mimeType: 'text/plain' 
    } 
}; 
drive.files.create(request, function(err, result) { 
    if (err) { 
     console.log(err); 
    } else { 
     console.log(result); 
    } 
    }); 
});