Javascript - 自建批处理文件下载提示
Javascript - Download prompting of self created batch files
我是 javascript
的菜鸟,所以如果我的问题很简单,我很抱歉。无论如何,
我正在编写一个创建批处理文件的代码,以便在操作系统定义的默认应用程序中打开某个文件。例如,pdf 文件将在 Adobe 的 Acrobat Reader 中打开。为此,我使用 FileSaver.js
我的代码是这样的:
$(document).ready(function() {
$('#openPdf').click(function() {
saveAs(data2blob(
myPDF),
'openPDF.bat');
});
});
function data2blob(data, isBase64) {
var chars = "";
if (isBase64)
chars = atob(data);
else
chars = data;
var bytes = new Array(chars.length);
for (var i = 0; i < chars.length; i++)
bytes[i] = chars.charCodeAt(i);
var blob = new Blob([new Uint8Array(bytes)],
{type: "text/plain;charset=utf-8"});
return blob;
}
其中 myPDF
是我要打开的特定文件的字符串,我确定它存在。当我在 IE 上测试我的代码时,它运行良好。但是,当我在 Firefox 上尝试时,创建的文件是 'openPDF.bat.sdx' 而不是 'openPDF.bat'。我检查过它确实是同一个文件,只是添加了扩展名。有谁知道这是什么原因?我该如何克服它?
我终于成功地在 Firefox 中以与在 IE 中相同的方式下载了文件。我对代码做了一个小改动:在 data2blob
函数中创建 blob
变量时,我使用了:
var blob = new Blob([new Uint8Array(bytes)], {type: "application/octet-stream"});
不确定,以前的样子和现在的样子有什么区别,当然除了结果。
我是 javascript
的菜鸟,所以如果我的问题很简单,我很抱歉。无论如何,
我正在编写一个创建批处理文件的代码,以便在操作系统定义的默认应用程序中打开某个文件。例如,pdf 文件将在 Adobe 的 Acrobat Reader 中打开。为此,我使用 FileSaver.js
我的代码是这样的:
$(document).ready(function() {
$('#openPdf').click(function() {
saveAs(data2blob(
myPDF),
'openPDF.bat');
});
});
function data2blob(data, isBase64) {
var chars = "";
if (isBase64)
chars = atob(data);
else
chars = data;
var bytes = new Array(chars.length);
for (var i = 0; i < chars.length; i++)
bytes[i] = chars.charCodeAt(i);
var blob = new Blob([new Uint8Array(bytes)],
{type: "text/plain;charset=utf-8"});
return blob;
}
其中 myPDF
是我要打开的特定文件的字符串,我确定它存在。当我在 IE 上测试我的代码时,它运行良好。但是,当我在 Firefox 上尝试时,创建的文件是 'openPDF.bat.sdx' 而不是 'openPDF.bat'。我检查过它确实是同一个文件,只是添加了扩展名。有谁知道这是什么原因?我该如何克服它?
我终于成功地在 Firefox 中以与在 IE 中相同的方式下载了文件。我对代码做了一个小改动:在 data2blob
函数中创建 blob
变量时,我使用了:
var blob = new Blob([new Uint8Array(bytes)], {type: "application/octet-stream"});
不确定,以前的样子和现在的样子有什么区别,当然除了结果。