【问题标题】:JavaScript - load PDF file from URL (cross domain) into variableJavaScript - 从 URL(跨域)加载 PDF 文件到变量中
【发布时间】:2017-11-02 22:10:42
【问题描述】:

我想将 PDF 文件从 URL 加载到 JavaScript 变量中(该文件位于另一个域中),然后打印该文件的 base64 编码字符串。

这个脚本允许我浏览我的计算机上的文件,然后它将 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>

我想从这个脚本中完全删除输入按钮,并将我的文件从 URL 传递给变量 var selectedFile(例如:http://www.example.com/docs/document.pdf)。

我需要帮助来实现这一点,因为我不确定XMLHttpRequest() 是否可以跨域工作,并且我发现使用主要使用 JSON 文件操作的 Ajax/jQuery 方法的脚本,这是我需要的不同的东西.

非常感谢您的帮助。

【问题讨论】:

    标签: javascript jquery ajax pdf


    【解决方案1】:

    如果另一方(在您的情况下为http://www.example.com)不允许来自您的来源的cross-origin requests,则您无法在普通的基于浏览器的 JavaScript* 中执行此操作。

    如果对方允许让你这样做,那么是的,你会使用XMLHttpRequest(或jQuery的包装器,例如ajaxget)来请求数据并按您认为合适的方式转换/显示它。

    如果对方不这样做,一个相当典型的解决方法是在中间使用您自己的服务器:向您的服务器发出请求,让它向另一方发出请求端(服务器端代码没有浏览器强加的Same Origin Policy 块),然后让您的服务器使用来自其他服务器的数据响应您的请求。


    * “普通的基于浏览器的 JavaScript” - 例如,不使用禁用安全的特殊标志启动浏览器,或者让人们安装扩展等。

    【讨论】:

      猜你喜欢
      • 2016-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多