javascript - 如何使用 Webix 和 Javascript 下载具有特定名称的文本文件

标签 javascript download webix

在我的 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/

相关文章:

javascript - ExtJs 3.4 : set label border, 中心标签文本和粗体标签文本

javascript - 来自 Javascript 字符串的innerHTML

Java 等待线程完成

javascript - 组合的自定义过滤器

javascript - 将值设置为日期选择器而不单击 'Done' 按钮

javascript - meteor 坠落 "ReferenceError: document is not defined"

javascript - Firebase 身份验证无法使用 Vue 和 Vuex

android - 我们不能将 Gingerbread 源代码从一个系统转移到另一个系统吗? - 安卓

android - 如何在 Tasker 的 HTTP Get 操作中将超时设置为零?

javascript - 从 Webix 中结果对象的属性加载数据