• 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";
    }
  • 相关阅读:
    JavaScript 中的undefined and null 学习
    html5 file upload and form data by ajax
    openresty + lua-resty-weedfs + weedfs + graphicsmagick动态生成缩略图(类似淘宝方案)
    ubuntu10.04 安装oracle server 版 笔记
    windows xp + mysql5.5 + phpmyadmin insert 中文繁體
    (原创)ubuntu 10.04+ruby1.9.2+rails3 安装记录
    ruby簡單的代碼行統計工具
    Ruby中如何复制对象 (deep clone)(转载)
    vi 常用命令使用說明
    一个小公司老板的日常管理日记,希望能让创业的朋友学到东西(转载)
  • 原文地址:https://www.cnblogs.com/liangyongwang/p/14172414.html
Copyright © 2020-2023  润新知