JavaScript - 将PDF文件从URL(跨域)加载到变量

时间:2017-06-01 16:40:30

标签: javascript jquery ajax pdf

我想将URL中的PDF文件加载到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()是否可以跨域运行,而我在Ajax / jQuery方法中找到的脚本主要是使用JSON文件运行的,是我需要的东西。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

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

如果另一方 允许你这样做,那么是的,你使用XMLHttpRequest(或jQuery的包装器,例如{{3 }}或ajax)请求数据并根据需要转换/显示它。

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

*&#34;基于浏览器的普通JavaScript&#34; - 例如,没有使用禁用安全性的特殊标志启动浏览器,或者让人们安装扩展程序等等。