SmartUpload下载(改)

使用SmartUpload下载:

下载代码(更改后,可以下载ZIP文件,需要SmartUpload组件):

 		//设置转发的编码格式
        request.setCharacterEncoding("utf-8");
        long codeId = Integer.parseInt(request.getParameter("codeId"));
        ICodeService iCodeService = Factory.getCodeServiceImpl();
        Code code = new Code(codeId);
        //查询数据
        Code down = iCodeService.codeSelect(code);
        SmartUpload su = new SmartUpload();
        su.initialize(getServletConfig(), request, response);
        try {
            su.downloadFile(down.getCodePath());
        } catch (SmartUploadException e) {
            e.printStackTrace();
        }

可以不用看(旧的,之前可以实现后面不行了,下载的ZIP文件为0KB)
(保存下来,算是一个纪念)
昨天提到要把下载功能实现,但我并不是将文件上传到服务器的相对路径,是将文件保存在绝对路径的文件夹里。
也确实可以这样干,所以刚开始我是想使用IO流读取文件,再进行写入,想法很好,但是由于我上传保存的是压缩文件,只能下载一个文件名的文件,压缩的数据不能一起下载下来,进行了一番查找,还是顺利的解决了这个小问题。

下载要使用 a:href 或 form

在这里插入图片描述

在这里插入图片描述
我的下载代码:

 //设置转发的编码格式
        request.setCharacterEncoding("utf-8");
        long codeid = Integer.parseInt(request.getParameter("codeid"));
        ICodeService iCodeService = new CodeServiceImpl();
        Code code = new Code(codeid);
        //查询数据
        Code down = iCodeService.codeSelect(code);
        //下载必写  消息头
        response.addHeader("content-Type","application/octet-stream");
        response.addHeader("content-Disposition","attachement;filename="+down.getCodename());
        //将本地文件的路径传到File
        File file = new File(down.getCodepath());
        if(file.exists()){
            //使用输入流读取文件信息
            InputStream in = new FileInputStream(file);
            //先将文件传到BufferedInputStream的缓冲区内
            BufferedInputStream bf = new BufferedInputStream(in);
            //输出文件
            OutputStream os = response.getOutputStream();
            byte[] data = new byte[1024];
            int len = 0;
            while((len = bf.read(data))!=-1){
            	//写入数据
                os.write(data,0,len);
            }
        }else {
            System.out.println("下载失败");	//测试用
        }

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值