springboot上传图片

话不多说,直接上代码

第一步: 先创建controller : UploadFileController

import gl.com.gugong.util.FileNameUtil;
import gl.com.gugong.util.Result;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.util.Arrays;

@RequestMapping("file")
@RestController
public class UploadFileController {

    //文件扩展名校验
    private String arrsuffix[] = {"PNG","JPG","JPEG","BMP","GIF","SVG"};
    @Value("${file.path}")
    private String uploadPath;

    @RequestMapping(value = "/upload")
    public Result upload(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
        try {
            if (file.isEmpty()) {
                return Result.error("上传图片服务器内容为空");
            } else {
                String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);
                if (!Arrays.asList(arrsuffix).contains(suffix.toUpperCase())) {
                    return Result.error("请选择正确格式的文件");
                }
                //获取文件名称
                String filenameup = file.getOriginalFilename();

                //定义要上传文件 的存放路径
                String localPath = uploadPath + "/";
                filenameup = FileNameUtil.getFileName(filenameup);
                File dest = new File(localPath,filenameup);
                if (!dest.exists()) {
                    dest.mkdirs();
                }
                file.transferTo(dest);//拷贝文件到指定路径储存
                return Result.success(filenameup);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        // 返回
        return Result.error("未知错误导致上传失败");
    }
}

第二步创建获取随机名的util :FileNameUtil

import cn.hutool.core.util.IdUtil;

public class FileNameUtil {
    /**
     * 获取文件后缀
     * @param fileName
     * @return
     */
    public static String getSuffix(String fileName){
        return fileName.substring(fileName.lastIndexOf("."));
    }

    /**
     * 生成新的文件名
     * @param fileOriginName 源文件名
     * @return
     */
    public static String getFileName(String fileOriginName){
        return IdUtil.simpleUUID() + FileNameUtil.getSuffix(fileOriginName);
    }
}

来看下yml配置文件:
file.path 生产环境的时候配置Linux要上传的地址即可
spring.resources.static-locations: 这是访问图片使用的,访问图片时 ip+端口+图片名称(上传时生成的随机名称)就可以访问到图片

server:
  port: 8081
spring:
  web:
    resources:
      static-locations: file:${file.path}
file:
  path: D:\photo

补充: 需要添加配置

<!--静态资源访问-->
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-webmvc</artifactId>
</dependency>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值