2017-06-01 29 views
0

我想將PDF文件從URL加載到JavaScript變量(此文件位於另一個域中),然後打印該文件的base64編碼字符串。JavaScript - 從URL(跨域)將PDF文件加載到變量中

該腳本可以讓我瀏覽我的電腦上的文件,然後它打印的base64字符串到瀏覽器控制檯:

<input id="inputFile" type="file" onchange="convertToBase64();" /> 

<script type="text/javascript"> 
    function convertToBase64() { 
     //Read File 
     var selectedFile = document.getElementById("inputFile").files; 
     //Check File is not Empty 
     if (selectedFile.length > 0) { 
      // Select the very first file from list 
      var fileToLoad = selectedFile[0]; 
      // FileReader function for read the file. 
      var fileReader = new FileReader(); 
      var base64; 
      // Onload of file read the file content 
      fileReader.onload = function(fileLoadedEvent) { 
       base64 = fileLoadedEvent.target.result; 
       // Print data in console 
       console.log(base64); 
      }; 
      // Convert data to base64 
      fileReader.readAsDataURL(fileToLoad); 
     } 
    } 
</script> 

我想從這個劇本完全刪除輸入按鈕,並通過我的文件變量var selectedFile來自URL(例如:http://www.example.com/docs/document.pdf)。

我需要一個幫助如何實現這一點,因爲我不確定XMLHttpRequest()是否跨域和腳本我發現主要與JSON文件操作的Ajax/jQuery方法,這是我需要的不同。

非常感謝您的幫助。

回答

3

如果對方(您的案例中的http://www.example.com)不允許cross-origin requests來自您的來源,則無法在正常的基於瀏覽器的JavaScript *中執行此操作。

如果對方確實讓你這樣做,那麼,你會使用XMLHttpRequest(或jQuery的包裝它,如ajaxget)請求數據和變換/顯示它您認爲合適的。

一個相當典型的解決,如果對方不就是用你自己的服務器之間的方式:請對您的服務器的要求,有它發出請求到另一側(服務器 - 端代碼沒有Same Origin Policy阻止瀏覽器強加),然後讓您的服務器使用來自其他服務器的數據來響應您的請求。


*「正常的基於瀏覽器的JavaScript」 - 例如,不啓動與禁用安全特殊標誌,或讓人們瀏覽器安裝一個擴展等