我在我的網站上有一個表單,它根據輸入爲用戶創建輸出。 我想用這個輸出創建一個文本文件供用戶下載(使用瀏覽器下載提示符,沒有安全問題)。jQuery/Javascript爲用戶下載創建一個文本文件
有沒有辦法用Javascript/jQuery做到這一點,而不使用PHP在服務器上首先創建文件?
我可以使用某種Javascript對象作爲虛擬文件,以便用戶可以下載它(解決用戶從服務器下載沒有真正的txt文件的問題)嗎?
我在我的網站上有一個表單,它根據輸入爲用戶創建輸出。 我想用這個輸出創建一個文本文件供用戶下載(使用瀏覽器下載提示符,沒有安全問題)。jQuery/Javascript爲用戶下載創建一個文本文件
有沒有辦法用Javascript/jQuery做到這一點,而不使用PHP在服務器上首先創建文件?
我可以使用某種Javascript對象作爲虛擬文件,以便用戶可以下載它(解決用戶從服務器下載沒有真正的txt文件的問題)嗎?
您可以通過使用Blob
(browser support,polyfill)來實現。看看這個example by @UselessCode:
(function() {
var textFile = null,
makeTextFile = function (text) {
var data = new Blob([text], {type: 'text/plain'});
// If we are replacing a previously generated file we need to
// manually revoke the object URL to avoid memory leaks.
if (textFile !== null) {
window.URL.revokeObjectURL(textFile);
}
textFile = window.URL.createObjectURL(data);
return textFile;
};
var create = document.getElementById('create'),
textbox = document.getElementById('textbox');
create.addEventListener('click', function() {
var link = document.getElementById('downloadlink');
link.href = makeTextFile(textbox.value);
link.style.display = 'block';
}, false);
})();
<textarea id="textbox">Type something here</textarea> <button id="create">Create file</button> <a download="info.txt" id="downloadlink" style="display: none">Download</a>
我可以添加Blob嗎? firefox無法識別它... –
有一個不支持它的瀏覽器的Blob填充:https://github.com/eligrey/Blob.js –
只有JavaScript或JQuery的這是不可能的,我認爲。您需要服務器端腳本 – vamsi
對於舊版瀏覽器(以及簡單的純文本文件),您可以在該文檔模式下打開一個窗口。看看這個答案[http://stackoverflow.com/questions/7338640/document-opentext-plain-formatting-ignored-in-webkit-safari-chrome](http://stackoverflow.com/questions/7338640/ document-opentext-plain-formatting-ignored-in-webkit-safari-chrome) –