Java_文件上传与下载(二)

Servlet+SmartUpload实现


1.上传

//使用smartUpload上传文件
    SmartUpload su = new SmartUpload();
    su.initialize(getServletConfig(),req,resp);

    //a.设置上传文件单个的大小
    su.setMaxFileSize(1024*1024*10);
    //b.设置上传文件的总大小
    su.setTotalMaxFileSize(1024*1024*100);
    //c.设置允许上传到文件类型
    su.setAllowedFilesList("jpg,txt,gif");
    String result = "上传成功";
    try {
        //d.设置不允许上传的文件类型
        su.setDeniedFilesList("mp4,mp3,jsp");
        //e.上传文件
        su.upload();

        int fileCount = su.save(filePath);
        System.out.println("成功上传"+fileCount+"个文件!");        
    } catch (Exception e) {
        //异常处理,异常编号是SmartUpload源码中提供的
        result = "上传失败!";
        if(e.getMessage().indexOf("1015")!=-1){
            result = "上传失败:文件类型不允许!";
        }else if(e.getMessage().indexOf("1010")!=-1){
            result = "上传失败:文件类型不允许!";
        }else if(e.getMessage().indexOf("1105")!=-1){
            result = "上传失败:文件大小超出限制!";
        }else if(e.getMessage().indexOf("1110")!=-1){
            result = "上传失败:文件总大小超出限制!";
        }
        e.printStackTrace();
    }

    //获取上传文件的信息
    for(int i=0;i<su.getFiles().getCount();i++)
    {
        com.jspsmart.upload.File tempFile = su.getFiles().getFile(i);
        System.out.println("----------------------------");
        System.out.println("表单中name的属性值:"+tempFile.getFieldName());
        System.out.println("文件名:"+tempFile.getFileName());
        System.out.println("文件类型:"+tempFile.getFileExt());
        System.out.println("文件全名:"+tempFile.getFilePathName());
        System.out.println("上传文件大小:"+tempFile.getSize());
        System.out.println("----------------------------");
    }

2.下载

(1)单个文件下载

    //单个文件的下载
    String fileName = req.getParameter("filename");

    SmartUpload su = new SmartUpload();
    su.initialize(getServletConfig(),req,resp);
    su.setContentDisposition(null);

    try {
        su.downloadFile("/images/"+fileName);
    } catch (SmartUploadException e) {
        e.printStackTrace();
    }

(2)文件批量下载:(将多个文件打包再下载)

    //批量文件下载,将其打包成zip文件
    resp.setContentType("application/x-msdownload");
    resp.setHeader("Content-Disposition","attachment;filename=downloadfile.zip");

    //获取下载文件路径,在根路径下的images文件夹下
    String path = req.getServletContext().getRealPath("/")+"images/";
    //获取要下载的文件的名称
    String[] filenames = req.getParameterValues("filename");
    //创建ZipOutputStream的实例
    ZipOutputStream zos = new ZipOutputStream(resp.getOutputStream());

    String str = "";
    String rt = "\r\n";

    for(String filename:filenames){
        str += filename+rt;

        //创建单个文件,并将其添加到Zip文件中
        File file = new File(path+filename);
        zos.putNextEntry(new ZipEntry(filename));

        FileInputStream fis = new FileInputStream(file);
        byte b[] = new byte[1024];
        int n=0;
        while((n=fis.read(b))!=-1){
            zos.write(b,0,n);
        }

        zos.flush();
        fis.close();
    }
    //给压缩文件添加注释 
    zos.setComment("download success:" +  rt +str);
    zos.flush();
    zos.close();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值