如何从ajax url中的系统上传PDF文件POST方法调用

时间:2017-03-21 09:02:16

标签: javascript jquery ajax api google-drive-api

我刚刚使用其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文件。我该如何选择呢?

1 个答案:

答案 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
  •   

希望它有所帮助。