js 下载文件 修改文件名

用js下载文件,使用<a>标签,添加download属性即可。

var a = document.createElement("a");
a.href = "http://XXX.com/audioStream/8a9dbae9d0859e48fc1f590fcf6d4ccc.mp3";
a.download ="test.mp3";
a.click();

但是如果想给文件重新命名,貌似js无法实现。

因此考虑后台实现,用java代理请求,获取文件设置文件名,返回到前端。

public void downFiles(HttpServletResponse response,String url,String workInfoId,int type){
        try{
            String prefix = type == 1 ? "wav" : "txt";
            url =  type == 1 ? url : (url + "?textInfoId="+workInfoId);
            HttpEntity entity = Request.Get(url).
                    execute().returnResponse().getEntity();
            byte[] bys = EntityUtils.toByteArray(entity);
            //获取作品名称
            Works works = this.worksDao.findByWorkId(workInfoId);
            String name = (works!=null && StringUtils.isNotBlank(works.getName())) ? works.getName() : Long.toString(new Date().getTime());
            response.setHeader("Content-Disposition", "attachment; filename="+ new String(name.getBytes("utf-8"), "ISO-8859-1")+"."+prefix);
            OutputStream out = response.getOutputStream();
            out.write(bys);
            out.close();
        }catch (Exception e){
            e.printStackTrace();
        }

    }
时间: 2024-10-13 17:07:39

js 下载文件 修改文件名的相关文章

两种 js下载文件的方法(转)

function DownURL(strRemoteURL, strLocalURL){ try{ var xmlHTTP = new ActiveXObject("Microsoft.XMLHTTP"); xmlHTTP.open("Get", strRemoteURL, false); xmlHTTP.send(); var adodbStream = new ActiveXObject("ADODB.Stream"); adodbStrea

Js下载文件到本地(兼容多浏览器)

在客户端通过js下载文件,试过几种下载方式,iframe方式仅限于IE浏览器,window.open(url),location.href=url 这两种方式在chrome浏览器还会是直接打开文件而不是下载,百度N久没有结果,在谷歌还是找到答案了,下载链接在此. window.downloadFile = function (sUrl) { //iOS devices do not support downloading. We have to inform user about this. i

js下载文件

function DownURL(strRemoteURL, strLocalURL){ try{ var xmlHTTP = new ActiveXObject("Microsoft.XMLHTTP"); xmlHTTP.open("Get", strRemoteURL, false); xmlHTTP.send(); var adodbStream = new ActiveXObject("ADODB.Stream"); adodbStrea

js/css文件修改后浏览器本地缓存解决

本文实例讲述了让html页面随js的修改来更新缓存的实现方法.分享给大家供大家参考.具体实现方法如下: 很多朋友都会碰到这样的情况:如果我们页面加载了js的话下次打开时也会是调用这个js缓存文件,但对于我们修改后调试和发布是非常的不方便了,本文就来谈论如何解决这一问题,下面一起来看看. 一.后台编写一个 UrlCommon的js/css url的连接操作类 1 using System; 2 using System.Collections.Generic; 3 using System.Lin

js 下载文件流

这个问题,先描述下最初的思路: 1.从接口中获取到文件流: 2.在浏览器中下载文件流: 按照上述问题在网上找答案,DOM File API,XMLHTTP,asp方法好多. 最后用最简单的方法window.location.href = apiUrl;直接实现了. 现在想想,就是一步下载,分开走就麻烦了.

python实践项目九:操作文件-修改文件名

描述:多个文件,文件名名包含美国风格的日期( MM-DD-YYYY),需要将它们改名为欧洲风格的日期( DD-MM-YYYY) 代码1:先创建100个文件名为美国风格日期的文件(文件路径为项目当前路径下) 1 #!/usr/bin/python 2 # -*- coding: UTF-8 -*- 3 #先创建一百个文件名为美国风格日期的文件 4 import os,random 5 for num in range(100): 6 mm=random.randint(1,12) 7 dd=ran

js下载文件;下载方式&lt;a&gt; 和href方式;已经中文乱码问题

一:先看看各种下载方式: 1. A 标签的方式 : <a target="_Blank" href="<%=basePath %>html/document/GJB/CYBDXZ/文件名.doc">文件名.doc</a> 2. href方式:   function go (name){                                             var url =  encodeURIComponent

js下载文件,判断文件是否返回

下载之前用的window.location.href下载的,但是这个判别不了文件是否返回,小文件倒还好,大的文件长时间没有下载也没有加载条什么的,用户有时会点击下载好几下,大的数据很容易将服务拖垮,所以决定改良下,参考网上大神的,大概思路是:用ifram标签下载,追加到文档,下载完成移除,前端带一个时间戳的cookie,后台接收,下载完成之后返回,前端一个定时循环的函数去验证是不是返回了时间戳,如果是确认下载成功 前端代码: $("#mylink").click(function ()

Servlet:浏览器下载文件时文件名为乱码问题

1 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 2 String filename = request.getParameter("filename"); 3 System.out.println(filename); 4 String path = getServletContext().get