• springMvc 系列 6-文件上传


    普通文件上传

    在index.jsp页面上放置上传按钮

    <h3>传统文件上传</h3>
    <a href="demo">demo</a>
    <form action="fileUpload1" method="post" enctype="multipart/form-data">
        选择文件:<input type="file" name="upload" /><br/>
        <input type="submit" value="上传" />
    </form>
    

    导入文件上传的坐标

            <dependency>
                <groupId>commons-fileupload</groupId>
                <artifactId>commons-fileupload</artifactId>
                <version>1.3.3</version>
            </dependency>
            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>2.4</version>
            </dependency>
    

    添加控制器方法来处理并生成文件,该文件放置于tomcat文件夹里

        @RequestMapping("/fileUpload1")
        public String fileUpload(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();
                    //把文件的名称设置唯一值,uuid
                    String uuid = UUID.randomUUID().toString().replace("-","");
                    filename=uuid+"_"+filename;
                    fileItem.write(new File(path, filename));//上传文件
                    fileItem.delete();//删除临时文件
                }
            }
            return "success";
        }
    

    springMVC上传

    springMVC框架提供了MultipartFile对象,该对象表示上传的文件,要求变量名称必须和表单file标签的name属性名称相同。

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

    在index.jsp页面上放置上传按钮

    <h3>Springmvc文件上传</h3>
    <form action="fileUpload2" method="post" enctype="multipart/form-data">
        选择文件:<input type="file" name="upload" /><br/>
        <input type="submit" value="上传" />
    </form>
    

    添加控制器方法来处理并生成文件

        @RequestMapping("/fileUpload2")
        public String fileUpload2(HttpServletRequest request, MultipartFile upload) throws Exception{
            System.out.println("springmvc文件上传...");
    
            //使用fileupload组件完成文件上传
            String path = request.getSession().getServletContext().getRealPath("/uploads");
            File file = new File(path);
            if(!file.exists()){
                file.mkdirs();
            }
            //获取上传文件的名称
            String filename = upload.getOriginalFilename();
            //把文件的名称设置唯一值,uuid
            String uuid = UUID.randomUUID().toString().replace("-","");
            filename = uuid + "_"+filename;
            //完成文件上传
            upload.transferTo(new File(path,filename));
            return "success";
        }
    

    跨服务器文件上传

    在index.jsp页面上放置上传按钮

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

    使用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>
    

    添加控制器方法来处理并生成文件

        @RequestMapping("fileUpload3")
        public String fileUpload3(MultipartFile upload) throws Exception{
            //定义上传文件服务器路径
            String path = "http://localhost:9090/uploads";
            String filename = upload.getOriginalFilename();
            String uuid = UUID.randomUUID().toString().replace("-","");
            filename = uuid + "_" + filename;
            //创建客户端的对象
            Client client = Client.create();
            //和图片服务器进行连接
            WebResource webResource = client.resource(path + filename);
            //上传文件
            webResource.put(upload.getBytes());
    
            return "success";
        }
    
  • 相关阅读:
    Python常用模块——第三方开源模块的安装使用
    Python常用模块——模块介绍与导入
    Linux文本编辑器vim
    Linux文件和文件夹的操作
    网络编程之IO模型——selectors模块
    设计模式学习(19)- 中介者模式
    设计模式学习(18)- 迭代器模式
    设计模式学习(17)- 解释器模式
    设计模式学习(16)- 命令模式
    设计模式学习(15)- 责任链模式
  • 原文地址:https://www.cnblogs.com/mantishell/p/12969183.html
Copyright © 2020-2023  润新知