首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何允许用户在使用Javascript下载时重命名文件

如何允许用户在使用Javascript下载时重命名文件
EN

Stack Overflow用户
提问于 2016-09-02 20:29:19
回答 1查看 418关注 0票数 0

我需要一个帮助。在使用Javascript/Angular.js下载时,我需要重命名文件。实际上,我有一个功能转换HTML表到excel表,并下载它。我在下面解释我的代码。

代码语言:javascript
运行
复制
$scope.generateExcelSheet=function(){
    var uri = 'data:application/vnd.ms-excel;base64,'
    , template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>'
    , base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) }
    , format = function(s, c) { return s.replace(/{(\w+)}/g, function(m, p) { return c[p]; }) }
      var table='exportable';
      var name='Report';
     // console.log('table',table,name);
    if (!table.nodeType) table = document.getElementById(table)
    var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML}
    window.location.href = uri + base64(format(template, ctx));
}

在这里,我需要在文件下载之前,它会要求用户重命名文件,然后下载它。请帮帮我。

EN

回答 1

Stack Overflow用户

发布于 2016-09-02 20:34:29

不是将窗口位置更改为您的数据url,而是创建一个<a>元素(它不需要是DOM的一部分,使用document.createElement('a')就足够了),将URL放入base64 url的href属性中,并添加一个具有您所关心的任何文件名的download属性。然后在创建的锚点上调用click()

这可以在任何浏览器上运行,这意味着-大多数现代浏览器,除了IE11 (但在supports the download attribute上运行)和Safari。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39292462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档