记录实现SpringMVC实现文件上传中出现的一些小问题

一开始采用最原始的文件上传试了一下,

1.最开始出现的问题是没有用代码对文件名进行设置,导致传来的是比如:uploads/C:\Users\Deskdop\Pictures\xxx.jpg

就报了错说xxxxx格式不正确,后来就用代码进行了约束。

2.后来没报错,正常跳转了,但我的myeclipse中uploads文件夹中没有上传的文件。。。以前晓得现在又给忘记了,图片是放在tomcat工程下,要想改成存在IDE的工作空间中需要去设置下。。。。。

  /*
     * 传统方式实现图片上传
     */
    @RequestMapping(value = "fileupload")
    public String fileupload2(HttpServletRequest request) throws Exception {
        // 先获取到要上传的文件目录
        String path = request.getSession().getServletContext().getRealPath("/uploads");
        // 创建File对象,一会向该路径下上传文件
        File file = new File(path);
        // 判断路径是否存在,如果不存在,创建该路径
        if (!file.exists()) {
            file.mkdirs();
        }
        // 创建磁盘文件项工厂
        DiskFileItemFactory factory = new DiskFileItemFactory();
        ServletFileUpload fileUpload = new ServletFileUpload(factory);
        // 解析request对象
        List<FileItem> list = fileUpload.parseRequest(request);
        // 遍历
        for (FileItem fileItem : list) {
            // 判断文件项是普通字段,还是上传的文件
            if (fileItem.isFormField()) {
            } else {
                // 上传文件项2. SpringMVC传统方式文件上传
                // 获取到上传文件的名称
                String filename = fileItem.getName();
                // 文件后缀名
                String extendName = filename.substring(filename.lastIndexOf("."), filename.length());
                String uuid = UUID.randomUUID().toString().replace("-", "").toUpperCase();
                filename = uuid + extendName;
                System.out.println(filename + "..");
                // 上传文件
                fileItem.write(new File(file, filename));
                // 删除临时文件
                fileItem.delete();
            }
        }
        return "hello";
    }

使用SpringMVC方式进行图片文件上传,

1.一开始写出现的问题报空错误,还是因为一开始没有用代码对上传的文件名做一个正确的约束,不过一下改过来了

/*
     * SpringMVC方式实现文件上传
     */
    @RequestMapping(value = "fileupload2")
    public String testResponseJson(MultipartFile upload,HttpServletRequest request) throws Exception{
        System.out.println("SpringMVC方式的文件上传...");
        // 先获取到要上传的文件目录
        String path = request.getSession().getServletContext().getRealPath("/uploads");
        // 创建File对象,一会向该路径下上传文件
        File file = new File(path);
        // 判断路径是否存在,如果不存在,创建该路径
        if(!file.exists()) {
        file.mkdirs();
        }
        String filename = upload.getOriginalFilename();
        String extendName = filename.substring(filename.lastIndexOf("."), filename.length());
        String uuid = UUID.randomUUID().toString().replaceAll("-", "").toUpperCase();
        // 把文件的名称唯一化
        filename = uuid + extendName;    
        // 上传文件
        upload.transferTo(new File(file,filename));
        return "hello";    
    }

 

PS:吐槽下Myeclipse,最近卡的我要死,降低了我的学习效率,搞完老师这demo,下学期上手IDEA。。。

 

posted @ 2019-08-16 22:09  曾聪聪  阅读(590)  评论(0)    收藏  举报