2017-06-01 86 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” - 例如,不启动与禁用安全特殊标志,或让人们浏览器安装一个扩展等