我想将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文件运行的,是我需要的东西。
非常感谢您的帮助。
答案 0 :(得分:3)
如果另一方(您的情况为http://www.example.com
)不允许cross-origin requests来自您的来源,则无法在普通的基于浏览器的JavaScript *中执行此操作。
如果另一方 允许你这样做,那么是的,你使用XMLHttpRequest
(或jQuery的包装器,例如{{3 }}或ajax
)请求数据并根据需要转换/显示它。
一种相当典型的解决方法,如果对方不在中间使用您自己的服务器:向您的服务器发出请求,让它发出请求另一方(服务器端代码没有浏览器强加的get
块),然后让服务器使用来自其他服务器的数据响应您的请求。
*&#34;基于浏览器的普通JavaScript&#34; - 例如,没有使用禁用安全性的特殊标志启动浏览器,或者让人们安装扩展程序等等。