Java文件下载 弹出下载框

js部分代码:

//开启下载
window.location.href = "wechatrelease/download?url=" + url;

Java部分代码:

@ResponseBody
@RequestMapping("/download")
public void download(HttpServletRequest request, HttpServletResponse response) {
	try {
		String url = request.getParameter("url");
		String filepath = uploadUrl + url.substring(7); //此处由于项目路径特殊,做了路径拼接,可忽略
		filepath = filepath.replace("/", "\\");
		// 弹出下载选项
		DownloadUtil.dataUpload(filepath, "", request, response);
	} catch (Exception e) {
		e.printStackTrace();
	}
} 

DownloadUtil工具类 

public class DownloadUtil {
    public static HttpServletResponse dataUpload(String fileSrc, String rename, HttpServletRequest request, HttpServletResponse response) {
        response.setContentType("text/html; charset=UTF-8");
        try {
            File file = new File(fileSrc);
            // 取得文件名。
            String filename = file.getName();
            if (!ToolsUtil.isEmpty(rename)) {
                filename = rename;
            }
            String agent = request.getHeader("USER-AGENT");
            if (null != agent && -1 != agent.indexOf("MSIE") || null != agent && -1 != agent.indexOf("Trident")) {// ie
                String name = java.net.URLEncoder.encode(filename, "UTF8");
                filename = name;
            } else if (null != agent && -1 != agent.indexOf("Mozilla")) {// 火狐,chrome等
                filename = new String(filename.getBytes("UTF-8"), "iso-8859-1");
            }
            // 取得文件的后缀名。
            // String ext = filename.substring(filename.lastIndexOf(".") +
            // 1).toUpperCase();
            // 以流的形式下载文件。
            InputStream fis = new BufferedInputStream(new FileInputStream(file));
            byte[] buffer = new byte[fis.available()];
            fis.read(buffer);
            fis.close();
            response.reset();
            // 设置response的Header
            response.addHeader("Content-Disposition", "attachment;filename=" + filename);
            response.addHeader("Content-Length", "" + file.length());
            OutputStream out = new BufferedOutputStream(response.getOutputStream());
            response.setContentType("application/octet-stream");
            out.write(buffer);
            out.flush();
            out.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        return response;
    }
}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值