我刚刚使用其API将一个空PDF文件上传到谷歌驱动器中,点击一下按钮。
<html>
<body>
<script type="text/javascript">
$(document).ready(function(){
$("button").click(function(){## Heading ##
enter code here
$.ajax({
url: 'https://www.googleapis.com/upload/drive/v2/files',
type: 'POST',
data: 'http://fddf3e6.ngrok.io/untitle.pdf',
contentType: 'application/pdf',
success: function() {
console.log('Successfully File uploaded!');
},
error: function() {
console.log('Error while uploading file!!!');
},
beforeSend: function(xhr)
{
xhr.setRequestHeader('Authorization', 'Bearer <accessToken>');
}
});
});
});
</script>
<button>Send</button>
</body>
</html>
我将PDF文件位置的URL作为数据对象,但它将URL仅作为PDF文件的内容。如何将PDF文件上传到由我分配的Google云端硬盘中。
现在,我可以通过拥有用户访问令牌和google驱动器API将空PDF文件上传到驱动器中。我只需要帮助就可以选择要上传的PDF文件。我该如何选择呢?
答案 0 :(得分:0)
如相关SO post中所述,您无法使用网址上传文件。您可以缓冲内存中的内容然后上传。
您可以使用此post中的此代码来获取文件的内容。
var base64Data = btoa(e.target.result);
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;
$.ajax({
url: 'https://www.googleapis.com/upload/drive/v2/files?uploadType=multipart',
type: 'POST',
headers: {
"Authorization": 'Bearer ' + ACCESS_TOKEN,
"Content-Type": 'multipart/related; boundary="'+ boundary + '"'
},
success: function() {
// TODO XIN
console.log('>>> DONE');
},
error: _handleUploadErrors,
data: multipartRequestBody,
cache: false,
contentType: false,
processData: false,
crossDomain: true
});
您还可以设置上传类型以匹配您上传的文件类型。
- 简单上传:
uploadType=media
。用于快速传输小文件(5 MB或更少)。要执行简单上传,请参阅Performing a Simple Upload。- 分段上传:
uploadType=multipart
。用于快速传输小文件(5 MB或更少)和描述文件的元数据,所有这些都在一个请求中。要执行分段上传,请参阅Performing a Multipart Upload。- 可恢复上传:
uploadType=resumable
。为了更可靠的传输,对于大文件尤为重要。对于大多数应用程序,可恢复上载是一个不错的选择,因为它们也适用于小文件,每次上传一个额外的HTTP请求。要执行可恢复的上传,请参阅Performing a Resumable Upload。
希望它有所帮助。