在我的 Webix 应用程序中,我尝试下载具有特定文件名的文件,该文件名可以从用户处获取或以编程方式构建。下载功能工作正常,但文件总是以“下载”名称下载。
浏览器是Chrome。我需要让它在 Chrome 和 Firefox 上都能工作。 以下是我的下载工作代码:
Webix 部分:
mytoolbar =
{ id:'toolbarID',
view: 'toolbar',
height: rowHeight,
type: 'clean',
cols: [
{view:"button", id:"downld", label:"Download", width:100, tooltip: "Download data", on: {onItemClick:function(){downloadData()}} },
]
}
回调函数:
function downloadData() {
var $$ref = $$('mytext');
var value = $$ref.getValue();
var msg = "This is the " + value + "of the port";
// assume that the filename will be also be constructed like msg as
// as above.
document.location = 'data:Application/octet-stream,' + encodeURIComponent(msg)
}
我徒劳地尝试了以下方法:
Webix 下载功能,我需要下载为 .txt 文件,但不起作用:
var $$ref = $$('mytext');
var value = $$ref.getValue();
var msg = "This is the " + value + "of the port";
var blob = new Blob([msg.toString()], { type: "application/pdf" });
webix.html.download(blob, "myfile.pdf");
下面的一个可以工作,但是我无法传递文本和文件名的变量。它仅适用于硬编码文本和文件名。任何提供变量的提示都会有帮助。 :
function downloadData() {
$('<a href="data:text/plain,Test" download="test.txt">')[0].click()
}
以下尝试部分有效。它总是下载带有长文本的文件,例如“235d67c8-892f-465d-95c4-17bc3cc51849”。假设变量 msg 与上面相同:
function downloadData() {
var msg = "Contstucted as above by string concatenation";
var filename = file + ".txt"; //assume file is a var
var blob = new File([msg], filename, {"type": "application/octet-stream"});
var a = document.createElement("a");
a.href = URL.createObjectURL(blob);
window.location.href=a;
}
如果我将 Webix 按钮更改为 anchor ( ),如下所示并传递 download= "filename",这也不起作用,但是在这种情况下,无法动态传递文件名变量。
{ template:"<a id = \"link\", onclick=\"downloadData()\" , href = \"#\" >Download</a>" },
当前端是Webix时,有没有办法实现这一点?这些示例仅在 stackoverflow 上的各个链接中进行过尝试,下面给出了一些示例:
Is there any way to specify a suggested filename when using data: URI?
How to set a downloading file name using window.open in javascript
最佳答案
你的代码实际上对我有用(或者当然结果文件不是PDF文件,但它包含指定的名称和内容)
http://webix.com/snippet/400b9001
不过,此类代码对于 Mac 上的 Safari 浏览器会失败。 Safari 不支持为要下载的文件设置自定义名称。好消息是,这个功能已经添加到最新的开发中。 Safari 预览版,因此功能将在下一次 Mac OS 更新中正常工作。
关于javascript - 如何使用 Webix 和 Javascript 下载具有特定名称的文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43650812/