Javascript 如何在ajax url POST方法调用中从系统上载PDF文件

Javascript 如何在ajax url POST方法调用中从系统上载PDF文件,javascript,jquery,ajax,api,google-drive-api,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:

我刚刚用谷歌的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文件到谷歌驱动器是由我指定的

现在我可以通过用户访问令牌和GoogleDrive API将一个空PDF文件上传到驱动器中。我只需要帮助选择一个PDF文件,我想上传。如何选择它?

如相关文件中所述,您不能使用url上载文件。您可以在内存中缓冲内容,然后上载它

您可以使用此代码从中获取文件的内容

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=媒体。用于快速传输小于等于5 MB的小文件。要执行简单的上载,请参阅。 多部分上载:uploadType=多部分。用于在单个请求中快速传输小于等于5 MB的小文件和描述该文件的元数据。要执行多部分上载,请参阅。 可恢复上载:uploadType=可恢复。用于更可靠的传输,对于大型文件尤其重要。对于大多数应用程序来说,可恢复上传是一个不错的选择,因为它们也适用于小文件,每次上传都需要额外一个HTTP请求。要执行可恢复上载,请参阅。 希望能有帮助