文件的上传

博客展示了Java实现文件上传的代码,通过DiskFileItemFactory和ServletFileUpload解析请求,遍历FileItem对象处理表单域和文件,将文件按日期存储并生成唯一文件名,计算MD5值存入数据库。还给出了JSP文件上传页面示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

文件的上传:

 

FileItemFactory factory = new DiskFileItemFactory();

ServletFileUpload upload = new ServletFileUpload(factory);
        try {
            //解析请求
            List<FileItem> items = upload.parseRequest(req);
            //遍历所有的fileitem的对象呢,每一个对象代表一个输入框
            for(FileItem item:items){
                //判断这个输入框是否为一个普通的表单
                if(item.isFormField()){
                    String name = item.getName();
                    String value = item.getString();
                    System.out.println("表单域"+name+",value:"+value);
                    //是文件
                }else{
                    //输入框的name
                    String filename = item.getFieldName();
                    System.out.println("filename:"+filename);
                    //文件名
                    String name = item.getName();
                    System.out.println("name:"+name);
                    //输入流
                    InputStream is = item.getInputStream();
                    //获取当前项目
                    String sc = getServletContext().getRealPath("/");
                    //获取当前系统时间
                    LocalDate now = LocalDate.now();
                    String xdPath = "files/"+now.getYear()+"/"+now.getMonthValue()+"/"+now.getDayOfMonth()+"/";
                    String path = sc+xdPath;
                    File pathDir = new File(path);
                    if(!pathDir.exists()){
                        pathDir.mkdirs();
                    }
                    //获取一个当前时间
                    DateTimeFormatter formatter = DateTimeFormatter.BASIC_ISO_DATE;
                    String dateStr = formatter.format(now);
                    String date = dateStr+System.currentTimeMillis()+(int)(Math.random()*100);
                    //取出扩展名
                    String extName = name.substring(name.lastIndexOf("."));
                    String fname = date+extName;
                    //存入数据库中的路径
                    String dbPath = xdPath+fname;
                    String md5 = getMD5ValueOfFile("C://Users/AA/Desktop/qqqq"+name);
                       System.out.println(md5);
                    //输出流
                    OutputStream os = new FileOutputStream(pathDir+"/"+fname);
                    IOUtils.copy(is, os);
                    //创建一个对象
                    MyFile dbFile = new MyFile(name, dbPath,md5);
                    //存入数据库
                    new FileService().add(dbFile);
                    is.close();
                    os.close();
                }
            }
        } catch (FileUploadException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

 

 

 

jsp页面

 <h1>文件上传</h1>
   <form action="Up2" method="post" enctype="multipart/form-data">
           <input type="file" name="file">
           <input type="submit">

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值