我是靠谱客的博主 冷酷老虎,最近开发中收集的这篇文章主要介绍SpringMVC day02 JavaWeb文件上传 及 文件名称出错解决,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

JavaWeb文件上传

  1. 导入相关pom坐标
<dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.4</version>
    </dependency>
    <dependency>
      <groupId>com.sun.jersey</groupId>
      <artifactId>jersey-core</artifactId>
      <version>1.18.1</version>
    </dependency>
  1. 作为最基础的文件上传方式,不使用SpringMVC框架,按照如下步骤撰写相关代码
		//1.确定上传的位置,Web项目中使用request传输文件
        String path = request.getSession().getServletContext().getRealPath("/uploads/");
        //path即为上传文件存储位置
        System.out.println(path);
        //1.1判断路径是否存在
        File file = new File(path);
        if (!file.exists()){
            //1.2文件不存在,创建文件
            file.mkdirs();
        }

        //2.解析request对象,获取上传文件
        //2.1 创建磁盘文件项工厂 
        DiskFileItemFactory factory = new DiskFileItemFactory();
        //2.2 创建上传文件对象
        ServletFileUpload upload = new ServletFileUpload(factory);
        //2.3 解析request内存出的文件对象
        List<FileItem> items = upload.parseRequest(request);

        //遍历
        for (FileItem item : items) {
            //进行判断 是否是上传文件项
            if (item.isFormField()){
                //是表单项
            }else {
                String name = item.getName();
                String uuid = UUID.randomUUID().toString().replace("-", "");
                name = uuid + "_" + name;
                //完成文件上传
                item.write(new File(path,name));
                //删除文件,更新内存
                item.delete();
            }
        }

使用SpringMVC框架完成文件上传

使用SpringMVC框架简化了解析request的步骤,只需完成如上中定义存储路径等步骤

  • 配置springmvc.xml中相关解析器

注意:该bean标签id属性只能为multipartResolver

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>
  • 撰写相关后台代码
	    //1.确定上传的位置
        String path = request.getSession().getServletContext().getRealPath("/uploads/");
        System.out.println(path);
        //1.1判断路径是否存在
        File file = new File(path);
        if (!file.exists()){
            //创建文件
            file.mkdirs();
        }

        //2.读取request解析后的文件,存储的位置是tomcat的位置
        String fileName = upload.getOriginalFilename();
        String uuid = UUID.randomUUID().toString().replace("-", "");
        //2.1避免覆盖 解决文件名出错,可进行+uuid设置
        fileName = uuid+fileName ;
        upload.transferTo(new File(file,fileName));
        return "success";

注意

  • 当显示文件名称出错等问题时,且为了避免出现文件覆盖等问题,可设置唯一Uuid,当设置唯一标识后,文件即读取成功。
  • 可尝试换一浏览器进行文件上传,上传都在request中,使用EE浏览器上传出错,出现文件读取失败,但谷歌浏览器上传成功。
  • 使用tomcat启动服务器时,极易产生404错误,当显示该线程已经被占用时,换其他HTTP port仍显示404错误,重启电脑后,服务器启动成功,跳转首页。

最后

以上就是冷酷老虎为你收集整理的SpringMVC day02 JavaWeb文件上传 及 文件名称出错解决的全部内容,希望文章能够帮你解决SpringMVC day02 JavaWeb文件上传 及 文件名称出错解决所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部