zoukankan      html  css  js  c++  java
  • 2、SpringBoot接口Http协议开发实战8节课(7-8)

    7、SpringBoot2.x文件上传实战
    简介:讲解HTML页面文件上传和后端处理实战
    1、讲解springboot文件上传 MultipartFile file,源自SpringMVC

    1)静态页面直接访问:localhost:8080/index.html
    注意点:
    如果想要直接访问html页面,则需要把html放在springboot默认加载的文件夹下面
    2)MultipartFile 对象的transferTo方法,用于文件保存(效率和操作比原先用FileOutStream方便和高效)
    访问路径 http://localhost:8080/images/cdd6ab24-acfd-48b0-a043-6e22812c7afd.jpg

     代码示例:

    FileController.java:

     1 package net.xdclass.demo.controller;
     2 
     3 import java.io.File;
     4 import java.io.IOException;
     5 import java.util.UUID;
     6 
     7 import javax.servlet.http.HttpServletRequest;
     8 
     9 import net.xdclass.demo.domain.JsonData;
    10 
    11 import org.springframework.stereotype.Controller;
    12 import org.springframework.web.bind.annotation.RequestMapping;
    13 import org.springframework.web.bind.annotation.RequestParam;
    14 import org.springframework.web.bind.annotation.ResponseBody;
    15 import org.springframework.web.multipart.MultipartFile;
    16 
    17 /**
    18  * 功能描述:文件测试
    19  *
    20  * <p> 创建时间:Apr 22, 2018 11:22:29 PM </p> 
    21  */
    22 @Controller
    23 public class FileController {
    24 
    25     @RequestMapping(value = "/api/v1/gopage")
    26     public Object index() {
    27         return "index";
    28     }
    29 
    30     private static final String filePath = "L:/Workspaces/Eclipse_Neon/txkt/SpringBootClass/xdclass_springboot/src/main/resources/static/images/";//末尾需要加/,这样才能写进来
    31 
    32     @RequestMapping(value = "upload")
    33     @ResponseBody
    34     public JsonData upload(@RequestParam("head_img") MultipartFile file, HttpServletRequest request) {
    35 
    36         // file.isEmpty(); 判断图片是否为空
    37         // file.getSize(); 图片大小进行判断
    38 
    39         String name = request.getParameter("name");
    40         System.out.println("用户名:" + name);
    41 
    42         // 获取文件名
    43         String fileName = file.getOriginalFilename();
    44         System.out.println("上传的文件名为:" + fileName);
    45 
    46         // 获取文件的后缀名,比如图片的jpeg,png
    47         String suffixName = fileName.substring(fileName.lastIndexOf("."));
    48         System.out.println("上传的后缀名为:" + suffixName);
    49 
    50         // 文件上传后的路径
    51         fileName = UUID.randomUUID() + suffixName;
    52         System.out.println("转换后的名称:" + fileName);
    53 
    54         File dest = new File(filePath + fileName);
    55 
    56         try {
    57             file.transferTo(dest);
    58 
    59             return new JsonData(0, fileName);
    60         } catch (IllegalStateException e) {
    61             e.printStackTrace();
    62         } catch (IOException e) {
    63             e.printStackTrace();
    64         }
    65         return new JsonData(-1, "fail to save ", null);
    66     }
    67 
    68 }

    JsonData.java:

     1 package net.xdclass.demo.domain;
     2 
     3 import java.io.Serializable;
     4 
     5 public class JsonData implements Serializable {
     6     private static final long serialVersionUID = 1L;
     7 
     8     //状态码,0表示成功,-1表示失败
     9     private int code;
    10     
    11     //结果
    12     private Object data;
    13 
    14     //错误描述
    15     private String msg;
    16     
    17     public int getCode() {
    18         return code;
    19     }
    20 
    21     public String getMsg() {
    22         return msg;
    23     }
    24 
    25     public void setMsg(String msg) {
    26         this.msg = msg;
    27     }
    28 
    29     public void setCode(int code) {
    30         this.code = code;
    31     }
    32 
    33     public Object getData() {
    34         return data;
    35     }
    36 
    37     public void setData(Object data) {
    38         this.data = data;
    39     }
    40 
    41     public JsonData(int code, Object data) {
    42         super();
    43         this.code = code;
    44         this.data = data;
    45     }
    46 
    47     public JsonData(int code, String msg,Object data) {
    48         super();
    49         this.code = code;
    50         this.msg = msg;
    51         this.data = data;
    52     }
    53     
    54     
    55     
    56 }

    上传成功

    8、jar包方式运行web项目的文件上传和访问处理(核心知识)
    简介:讲解SpingBoot2.x使用 java -jar运行方式的图片上传和访问处理

    1、文件大小配置,启动类里面配置

    @Bean
    public MultipartConfigElement multipartConfigElement() {
    MultipartConfigFactory factory = new MultipartConfigFactory();
    //单个文件最大
    factory.setMaxFileSize("10240KB"); //KB,MB
    /// 设置总上传数据总大小
    factory.setMaxRequestSize("1024000KB");
    return factory.createMultipartConfig();
    }

    2、打包成jar包,需要增加maven依赖
      <build>
        <plugins>
          <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
           </plugin>
        </plugins>
      </build>
    如果没加相关依赖,执行maven打包,运行后会报错:no main manifest attribute, in XXX.jar

    GUI:反编译工具,作用就是用于把class文件转换成java文件

    3、文件上传和访问需要指定磁盘路径
    application.properties中增加下面配置
    1) web.images-path=/Users/jack/Desktop(存储路径)
    2) spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,classpath:/test/,file:${web.upload-path}

    4、文件服务器:fastdfs,阿里云oss,nginx搭建一个简单的文件服务器

  • 相关阅读:
    shell进行mysql统计
    java I/O总结
    Hbase源码分析:Hbase UI中Requests Per Second的具体含义
    ASP.NET Session State Overview
    What is an ISAPI Extension?
    innerxml and outerxml
    postman
    FileZilla文件下载的目录
    how to use webpart container in kentico
    Consider using EXISTS instead of IN
  • 原文地址:https://www.cnblogs.com/116970u/p/10215882.html
Copyright © 2011-2022 走看看