java的上传与下载

文件的上传

    public static String up(File upfile, String uploadContentType,

            String uploadFileName) {
//         1:将上传的文件统一放置到upload的文件夹下
         String realPath = ServletActionContext.getServletContext().getRealPath("/upload");
//          2:将每天上传的文件,使用日期格式的文件夹分开,将每个业务的模块放置统一文件夹下:项目名称/upload/2017/9/22/文件
         String datePath=new SimpleDateFormat("/yyyy/MM/dd").format(new Date());
//          3:上传的文件名要指定唯一,可以使用UUID的方式,也可以使用日期作为文件名
         String UUIDName = UUID.randomUUID()+"";
         //截取文件后缀
         String type = uploadFileName.substring(uploadFileName.indexOf("."));//test.txt
         String finalpath=realPath+datePath+"/"+UUIDName+type;
        
         //判断上传文件夹是否存在
         File file=new File(realPath+datePath);
         if(!file.exists()){
             file.mkdirs();
         }
        
         File aimFile=new File(finalpath);
//          4:封装一个文件上传的方法,该方法可以支持多文件的上传,即支持各种格式文件的上传
         upfile.renameTo(aimFile);

//          5:保存路径path的时候,使用相对路径进行保存,这样便于项目的可移植性
         String path="/upload"+datePath+"/"+UUIDName+type;
         return path;

    }

@Transactional(readOnly=false)
    @Override
    public void save(ElecUser elecUser) {
        File[] upload = elecUser.getUpload();//用户附件
        String[] uploadContentType = elecUser.getUploadContentType();//用户类型
        String[] uploadFileName = elecUser.getUploadFileName();//用户名称
        if(upload!=null&&upload.length>0){
        for (int i = 0; i < uploadFileName.length; i++) {
            //创建附件对象
            ElecUserFile elecUserFile=new ElecUserFile();
            elecUserFile.setFileName(uploadFileName[i]);
            //在此进行文件上传,返回文件上传后的相对路径
            String fileURL=UpUtil.up(upload[i],uploadContentType[i],uploadFileName[i]);
            elecUserFile.setFileURL(fileURL);
            elecUserFile.setProgressTime(new Date());
            elecUserFile.setElecUser(elecUser);
            elecUserFileDao.save(elecUserFile);
        }
        }

文件的下载功能

//下载用户附件
public String download() throws IOException{
    String fileID=request.getParameter("fileID");
    //根据id获取用户附件信息
    ElecUserFile userFile=elecUserService.getFileByID(fileID);
    //获取附件路径和名称,进行下载
    String fileURL=userFile.getFileURL();
    String fileName=userFile.getFileName();
    fileName=new String(fileName.getBytes("gbk"),"iso8859-1");
    //获取文件下载的全路径
    String finalurl=ServletActionContext.getServletContext().getRealPath("")+fileURL;
    //两个下载头部信息
    response.setHeader("Content-disposition", "attachment;filename="+fileName);
    //获取输入流和输出流
    File file=new File(finalurl);
    FileInputStream in=new FileInputStream(file);
    ServletOutputStream out=response.getOutputStream();
    int b;
    while((b=in.read())!=-1){
        out.write(b);
    }
    return null;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值