使用javaSpringmvc的模式实现文件的上传(包括原生态的写法)

第一步:导入文件上传的jar包

 
        
            org.springframework
            spring-context
            5.0.2.RELEASE
        
        
            org.springframework
            spring-web
            5.0.4.RELEASE
        
        
            org.springframework
            spring-webmvc
            5.0.2.RELEASE
        
        
            javax.servlet
            servlet-api
            2.5
        
        
            javax.servlet
            jsp-api
            2.0
        
        
            commons-fileupload
            commons-fileupload
            1.3.1
        
        
            junit
            junit
            4.11
            test
        
        
            commons-fileupload
            commons-fileupload
            1.3.1
        
        
            commons-io
            commons-io
            2.4
        
    

第二步:编写jsp文件

文件上传

选择文件:

第三步:编写文件上传的Controller控制器

@Controller
@RequestMapping("/user")
public class FileupLoad {
    @RequestMapping("/fileloadup")
    public String fileupload(HttpServletRequest request) throws Exception {

        System.out.println("文件上传");

//        文件上传的位置获取到
        String path = request.getSession().getServletContext().getRealPath("/uploads");
        //然后去判断下这个path的路径存在不存在,如果不存在就创建
        File file = new File(path);
        if (!file.exists()) {
            System.out.println("文件名不存在,正在创建");
            file.mkdirs();
        }

//        现在path是一个要上传的目录。现在我们利用request对象获得上传文件项
        DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();  //这个是是一个上传文件的一个工厂

        ServletFileUpload upload = new ServletFileUpload(diskFileItemFactory);

        //这个是把对象给解析了,我们request是一个客户端上传给服务器的,所有里面的图片资源都在request里面
        List fileItems = upload.parseRequest(request);

        //现在增强for循环,把每一个字节循环给上传
        for (FileItem fileItem : fileItems) {
//            首先判断下每一个对象是不是文件项目
            if (fileItem.isFormField()) {
//                  说明这个是普通的表单项
            } else {
//                说明这个是图片资源,上传的资源

                //获取到文件的资源名字
                String fieldName = fileItem.getName();
//                如果我们在使用原来的文件名的时候只会一次又一次的覆盖源文件,所以就要创建一个命名唯一的值
                String uuid = UUID.randomUUID().toString().replace("-","");// UUID里面是有-的如果存在就直接替换成一个空的字符串
                fieldName = uuid + "_" + fieldName;


                //获取文件的一个名称,问了每一个名字不一样就要使用到UUd
                fileItem.write(new File(path,fieldName));
                  //删除;临时文件
                fileItem.delete();

            }
        }

        return "one";

    }
}

上面的是原生态的 下面我们看下springmvc是怎么解决这个问题的:

使用javaSpringmvc的模式实现文件的上传(包括原生态的写法)_第1张图片

首先在Springmvc.xml里面配置文件解析器

    
    

         
        
    


第二步去写control类

@Controller
@RequestMapping("/user")
public class Fileupload_SpringMvc {

    @RequestMapping("/fileloadup_springmvc")
    public String fileUploadToSpringMVC(HttpServletRequest request, MultipartFile upload) throws IOException {
        System.out.println("正在进行springmvc的方式");
//        首先获取到要下载那个位置
        String path = request.getSession().getServletContext().getRealPath("/uploads/");
        File file = new File(path);
        if (file.exists() != true) {
            file.mkdirs();
        }

//        获取文件的名字

        String filename = upload.getOriginalFilename();
        String uuid = UUID.randomUUID().toString().replace("-", "");
        filename = uuid + "_" + filename;
//         然后上传文件
        upload.transferTo(new File(path,filename));

        return "one";


    }
}

你可能感兴趣的:(自用)