idea使用commons-fileupload上传文件

文件上传使用的工具:https://commons.apache.org/proper/commons-fileupload/faq.html
文件上传的前提条件:

  • form表单method="post"
  • form表单enctype="multipart/form-data"
  • form表单持有file类型input进行文件选择(二进制数据)

上传案例:

//        1、初始化FileUpload组件
        FileItemFactory factory = new DiskFileItemFactory();
        /**
         * FileItemFactory 用于将前端表单的数据转换为一个个FileItem对象
         * ServletFileUpload 则是为FileUpload组件提供Java Web的Http请求解析
         */
        ServletFileUpload sf = new ServletFileUpload(factory);
//        2、遍历所有FileItem
        try {
            List<FileItem> formData = sf.parseRequest(request);
            for (FileItem fi : formData){
                if (fi.isFormField()){
                    System.out.println("普通输入项:" + fi.getFieldName() + ":" + fi.getString("UTF-8"));
                }else {
                    System.out.println("文件上传项:" + fi.getFieldName());
//                    3、文件保存到服务器目录
                    //获得文件上传的绝对路径
                    String path = request.getServletContext().getRealPath("/upload");       
//                    String path = "D:\\Imooc\\week13-14\\mgallery\\web\\upload";//现在只能想到写死,呃
                    System.out.println("上传文件目录:" + path);
                    String fileName = UUID.randomUUID().toString();
//                    fi.getName()得到原始文件名,截取最后一个.后所有字符串,例如:wxml.jpg--> .jpg
                    String suffix = fi.getName().substring(fi.getName().lastIndexOf("."));
//                    fi.write()写入目标文件
                    fi.write(new File(path,fileName+suffix));
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

使用idea开发,我web有一个upload文件夹,想把图片上传到web下面的upload下,即 D:\Imooc\week13-14\mgallery\web\upload,但是每次上传的地址都是 D:\Imooc\week13-14\mgallery\out\artifacts\mgallery_war_exploded\upload。就是war包下面编译文件中的upload。

解决方法:

把上面的OutPut directory 地址改为web就好了,如下:

真实的上传路径地址就是web下的upload了。

如果你的实在弄不好,又着急的话,那就先写死吧。不过,我相信问题总会解决的,加油啊!

posted @   吃星星的大黄鸭  阅读(358)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示