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

标签 javascript jquery ajax pdf

我想将 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 方法,这是我需要的不同的东西。

非常感谢您的帮助。

最佳答案

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

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

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

<小时/>

*“正常的基于浏览器的 JavaScript” - 例如,无需使用禁用安全性的特殊标志启动浏览器,或让人们安装扩展程序等。

关于JavaScript - 将 PDF 文件从 URL(跨域)加载到变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44312987/

相关文章:

javascript - 格式化输入数组,结果应该是 Angular 中以下给定格式的分组数组

javascript - 数据表 aaSorting 未按正确的列排序

php - 提交表单时,PHP 文件将作为新页面打开,而不是执行脚本

javascript - 从 JavaScript 重定向

javascript - 使用 Javascript 将 HTML 表格保存为 CSV

javascript - 下拉列表和按钮不起作用

javascript - 只读可通过插入的 JavaScript 进行编辑的文本字段?

javascript - 使用 $ 的变量声明

jquery - jquery防止点击事件

php - AJAX 解析 URL 以将变量传递给 MySQL 查询