简单粗暴前台实现文件的下载附后台代码(使用Get请求)

一、业务场景

前端点击按钮、自动下载服务器上存储的某文件;

二、实现方法

2.1 后端部分

1、创建文件对象
2、创建输入流对象
3、对文件进行流读取
4、获取输出流对象写出文件
5、关闭流

漂亮的代码片

// get请求
public void downloadFile(HttpServletRequest req , HttpServletResponse resp) {
	String temp = req.getParameter('id');
	//select url from xx Where id = #{id}
	//此时默认已知文件存储在服务器中的路径
	InputStream in = new FileInputStream(url);
	resp.reset();
	resp.setContentType("bin");
	response.addHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
	byte[] b = new byte[1024];
    int len;
    try {
        while ((len = in.read(b)) != -1)
            resp.getOutputStream().write(b, 0, len);
        in.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

2.2 前端部分(原生)

1、操作dom对象创建一个a标签
2、操作a标签,为其添加href属性
3、操作刚创建的a标签的点击事件
4、移除a标签(可不做)

漂亮的代码片

// downloadFile
functon downloadFile() {
	const a = document.createElement('a')
	a.href = '' //这里给上get请求的url
	a.download = fileName //这里给保存本地的文件名 (不写这行代码部分浏览器会默认给出原文件名)
	a.click()
	a.remove()
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值