我只有JavaScript页面和.asmx页面。我想下载文件 只使用JavaScript如何下载文件请给一些 解。我是JavaScript的初学者。我想下载特别的 恢复。
我在这里收到简历,
var res = data[i].resume;
我想下载简历请帮助我。
答案 0 :(得分:1)
您可以使用不同的第三方库:
将URL作为输入并下载文件,同时显示加载对话框。
Github:https://github.com/johnculviner/jquery.fileDownload
演示:http://jqueryfiledownload.apphb.com/
用法:
$.fileDownload(requestUrl, {
preparingMessageHtml: "Downloading...",
failMessageHtml: "Error, please try again."
});
将Blob
对象作为输入并下载。可以使用Blob
获取XMLHttpRequest
。
Github:https://github.com/eligrey/FileSaver.js/
演示:http://eligrey.com/demos/FileSaver.js/
用法:
var xhr = new XMLHttpRequest();
xhr.open("GET", requestUrl);
xhr.responseType = "blob";
xhr.onload = function () {
saveAs(this.response, 'filename.txt'); // saveAs is a part of FileSaver.js
};
xhr.send();
它还可用于保存基于canvas
的图片,动态生成的文字和任何其他Blob
。
function saveData(blob, fileName) // does the same as FileSaver.js
{
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
var url = window.URL.createObjectURL(blob);
a.href = url;
a.download = fileName;
a.click();
window.URL.revokeObjectURL(url);
}
现在,如果它是一个文本文件,您只需下载它,创建一个blob并保存它:
$.ajax({
url: requestUrl,
processData: false,
dataType: 'text'
}).done(function(data) {
var blob = new Blob([data], { type: "text/plain; encoding=utf8" });
saveData(blob, 'filename.txt');
});
或者您可以使用XMLHttpRequest
,它适用于任何类型的文件,包括二进制文件:
var xhr = new XMLHttpRequest();
xhr.open("GET", requestUrl);
xhr.responseType = "blob";
xhr.onload = function () {
saveData(this.response, 'filename'); // saveAs is now your function
};
xhr.send();
这是working demo。请注意,这个小提琴在打开文件后立即下载文件。该文件只是来自GitHub的随机源文件。
答案 1 :(得分:1)
实际上,有一个名为FileSaver.js
的JavaScript库,FileSaver.js在客户端保存文件。它可以帮助您实现这一目标。
此处:https://github.com/eligrey/FileSaver.js
用法:
<script src="http://cdn.jsdelivr.net/g/filesaver.js"></script>
<script>
function SaveAsFile(t,f,m) {
try {
var b = new Blob([t],{type:m});
saveAs(b, f);
} catch (e) {
window.open("data:"+m+"," + encodeURIComponent(t), '_blank','');
}
}
SaveAsFile("text","filename.txt","text/plain;charset=utf-8");
</script>
答案 2 :(得分:0)
为什么我们不能尝试window.open(<Download URL>)
?
答案 3 :(得分:0)
如果您使用jQuery,您可以这样做:
var getFile = function( path_to_file, callback ) {
$.ajax( {
url: path_to_file,
success: callback
} );
};
getFile( 'path_to_your_asmx_page', function( file_as_text ) {
console.log( file_as_text );
} );
致电getFile
,您将获得callback
功能
答案 4 :(得分:0)
使用下面的代码。
var sampleBytes = base64ToArrayBuffer('THISISTHETESTDATA');
saveByteArray([sampleBytes], 'ashok.text');
function base64ToArrayBuffer(base64)
{
var binaryString = window.atob(base64);
var binaryLen = binaryString.length;
var bytes = new Uint8Array(binaryLen);
for (var i = 0; i < binaryLen; i++)
{
var ascii = binaryString.charCodeAt(i);
bytes[i] = ascii;
}
return bytes;
}
var saveByteArray = (function ()
{
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
return function (data, name) {
var blob = new Blob(data, {type: "text/plain"}),
url = window.URL.createObjectURL(blob);
a.href = url;
a.download = name;
a.click();
window.URL.revokeObjectURL(url);
};
}());