• SpringBoot之MultipartFile文件上传(6)


    1、静态文件

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>文件上传</title>
    </head>
    <body>
        <form enctype="multipart/form-data" method="post" action="/v1/upload">
            文件:<input type="file" name="fileName"/></br></br>
            备注:<input type="text" name="remark"/>&nbsp;&nbsp;
            <input type="submit" value="上传"/>
        </form>
    </body>
    </html>

    2、return result

    package cn.xiaobing.demo.pojo;
    
    public class Result {
        private int code;
        private Object data;
        private String msg;
        public int getCode() {
            return code;
        }
        public void setCode(int code) {
            this.code = code;
        }
        public Object getData() {
            return data;
        }
        public void setData(Object data) {
            this.data = data;
        }
        public String getMsg() {
            return msg;
        }
        public void setMsg(String msg) {
            this.msg = msg;
        }
        public Result(int code, Object data, String msg) {
            super();
            this.code = code;
            this.data = data;
            this.msg = msg;
        }
        public Result() {
            super();
        }
        @Override
        public String toString() {
            return "Result [code=" + code + ", data=" + data + ", msg=" + msg + "]";
        }    
    }

    3、FileController

    package cn.xiaobing.demo.controller;
    
    import java.io.File;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.UUID;
    
    import javax.servlet.http.HttpServletRequest;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.PropertySource;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.multipart.MultipartFile;
    
    import cn.xiaobing.demo.pojo.Result;
    
    @Controller
    @PropertySource(value = { "application.properties" })//指定配置文件
    public class FileController {
        
        @Value("${web.upload.filepath}")//获取配置文件中的配置参数
        private String filePath;
    //  private static final String filePath = "C:/oneself/eclipse-workspace/springboot-v0/src/main/resources/static/images";
        
        @RequestMapping(value="/v1/upload")
        @ResponseBody
        public Object upload(@RequestParam("fileName") MultipartFile file,HttpServletRequest request) {
            String remark = request.getParameter("remark");//备注信息
            String filename = file.getOriginalFilename();//获取文件名称
            String suffixname = filename.substring(filename.lastIndexOf("."));//后缀
            filename = UUID.randomUUID() + suffixname;//文件上传后重命名数据库存储
            File dest = new File(filePath,filename);
            Map<String, String> data = new HashMap<String, String>();
            data.put("filename", filename);
            data.put("备注 ", remark);
            try {
                //MultipartFile对象的transferTo方法用于文件的保存(效率和操作比原来用的FileOutputStream方便和高效)
                file.transferTo(dest);//拷贝文件到指定路径储存
                return new Result(0, data, "上传成功");
            } catch (Exception e) {
                e.printStackTrace();
                return new Result(-1, data, "上传失败");
            }        
        }
    }

    4、启动项目

      .   ____          _            __ _ _
     /\ / ___'_ __ _ _(_)_ __  __ _    
    ( ( )\___ | '_ | '_| | '_ / _` |    
     \/  ___)| |_)| | | | | || (_| |  ) ) ) )
      '  |____| .__|_| |_|_| |_\__, | / / / /
     =========|_|==============|___/=/_/_/_/
     :: Spring Boot ::        (v2.0.1.RELEASE)

    5、访问upload.html上传文件

     6、点击上传,上传文件成功

     7、点击上传,上传失败

     8、设置上传文件大小限制,编码如下,在启动类中添加@Bean方法

    package cn.xiaobing.demo;
    import javax.servlet.MultipartConfigElement;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.web.servlet.MultipartConfigFactory;
    import org.springframework.context.annotation.Bean;
    
    @SpringBootApplication
    public class XiaoBingApplication {
        public static void main(String[] args) {
            SpringApplication.run(XiaoBingApplication.class,args);
        }
        @Bean
        public MultipartConfigElement multipartConfigElement() {
            MultipartConfigFactory factory = new MultipartConfigFactory();
            factory.setMaxFileSize("10240KB");//设置上传单个文件最大10M
            factory.setMaxRequestSize("102400KB");//设置上传文件总数据最大100M    
            return factory.createMultipartConfig();
        }
    }

    9、maven打包执行

    (1) pom.xml引入依赖

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    (2)打jar包-项目右键-Run As-Maven Install

    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 45.874 s
    [INFO] Finished at: 2020-06-29T23:44:45+08:00
    [INFO] ------------------------------------------------------------------------

    (3)启动项目

     (4) Test

    10、不足之处,后续优化。。。

  • 相关阅读:
    Error: unable to connect to node rabbit@mail: nodedown
    flash上传控件跨域
    Nginx配置指定媒体类型文件强制下载
    Nginx反向代理配置可跨域
    日志:using the Connector/J connection property 'autoReconnect=true' to avoid this problem
    web 安全(一)--web简介及 前端技术(js)
    Android 自动化之元素定位 xpath
    Wireshark入门
    自动化测试工具
    Android App 专项测试--压力测试篇(三)
  • 原文地址:https://www.cnblogs.com/xiaozhaoboke/p/13210970.html
Copyright © 2020-2023  润新知