zoukankan      html  css  js  c++  java
  • springmvc文件上传

    一、传统上传方式

    @RequestMapping("/fileupload2")
        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 {
    // 上传文件项
    // 获取到上传文件的名称
                    String filename = fileItem.getName();
    // 上传文件
                    fileItem.write(new File(file, filename));
    // 删除临时文件
                    fileItem.delete();
                }
            }
            return "success";
    
        }

    二、springMVC上传方式

     /**
         * SpringMVC方式的文件上传
         *
         * @param request
         * @return
         * @throws Exception
         */
        @RequestMapping(value="/fileupload3")
        public String fileupload3(HttpServletRequest request,MultipartFile upload) 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 uuid = UUID.randomUUID().toString().replaceAll("-", "").toUpperCase();
    // 把文件的名称唯一化
            filename = uuid+"_"+filename;
    // 上传文件
            upload.transferTo(new File(file,filename));
            return "success";
        }

    配置文件解析器对象

    <!-- 配置文件解析器对象,要求id名称必须是multipartResolver -->
    <bean id="multipartResolver"
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="maxUploadSize" value="10485760"/>
    </bean>

    三、SpringMVC跨服务器上传文件

    除文件上传先关外仍需要导入的依赖

    <dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-core</artifactId>
    <version>1.18.1</version>
    </dependency>
    <dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-client</artifactId>
    <version>1.18.1</version>
    </dependency>

    静态页面配置项

    <h3>跨服务器的文件上传</h3>
    <form action="user/fileupload3" method="post" enctype="multipart/form-data">
    选择文件:<input type="file" name="upload"/><br/>
    <input type="submit" value="上传文件"/>
    </form>

    控制器类代码

    /**
    * SpringMVC跨服务器方式的文件上传
    *
    * @param request
    * @return
    * @throws Exception
    */
    @RequestMapping(value="/fileupload3")
    public String fileupload3(MultipartFile upload) throws Exception {
    System.out.println("SpringMVC跨服务器方式的文件上传...");
    // 定义图片服务器的请求路径
    String path = "http://localhost:9090/day02_springmvc5_02image/uploads/";
    // 获取到上传文件的名称
    String filename = upload.getOriginalFilename();
    String uuid = UUID.randomUUID().toString().replaceAll("-", "").toUpperCase();
    // 把文件的名称唯一化
    filename = uuid+"_"+filename;
    // 向图片服务器上传文件
    // 创建客户端对象
    Client client = Client.create();
    // 连接图片服务器
    WebResource webResource = client.resource(path+filename);
    // 上传文件
    webResource.put(upload.getBytes());
    return "success";
    }
  • 相关阅读:
    Python上下文管理器
    面向对象(三)【类的特殊成员及高级特性】
    面向对象(二)【类的成员及修饰符】
    面向对象(一)【“类与对象”的概念及特性】
    leetcode【14题】Longest Common Prefix
    Spring Cloud之Zuul
    Spring Cloud之Hystrix
    SpringCloud之Eureka、Ribbon
    synchronized块中的wait()、nofity()、nofityAll()方法
    IP的分类以及子网划分、网络设置
  • 原文地址:https://www.cnblogs.com/liangyongwang/p/14172414.html
Copyright © 2011-2022 走看看