软件开发常用之SpringBoot文件上传接口编写(中),一本书,代码大全(里面有很多代码重构的方法),屎山代码的原因是不断追加逻辑,在错误代码上堆积新的功能,在写完逻辑之后去思考一下,逻辑合理不

简介: 软件开发常用之SpringBoot文件上传接口编写(中),一本书,代码大全(里面有很多代码重构的方法),屎山代码的原因是不断追加逻辑,在错误代码上堆积新的功能,在写完逻辑之后去思考一下,逻辑合理不

依赖配置:

        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.18</version>
        </dependency>

只是上传文件接口代码,download没写:

package zero.file.videoProject.controller;
 
 
import cn.hutool.core.io.FileUtil;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import zero.file.videoProject.bean.Result;
 
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
 
@RestController
@RequestMapping("/file")
public class FileController {
    @Value("${ip:localhost}")
    String ip;
    @Value("${server.port}")
    String port;
    @PostMapping("/upload")
    public Result upload(MultipartFile file) throws IOException {
        String originalFilename = file.getOriginalFilename(); // 文件的原始名称
        String mainName = FileUtil.mainName(originalFilename);
        String extName = FileUtil.extName("文件的后缀");
        // 当前文件的目录
        String projectPath = System.getProperty("user.dir"); //D:\project\零一电科\技术资料\lingyidianke\zeroBackEnd
        String filesPath = projectPath + "\\files"; // 文件存储的目录 //D:\project\零一电科\技术资料\lingyidianke\zeroBackEnd\files
        File parentFile = new File(filesPath);
        // 判断一下文件存储的路径存不存在,这种主要是文件上传重名问题
        if (!parentFile.exists()){
            // 如果不存在,创建这样一个目录
            parentFile.mkdirs();
        }
        // 如果当前文件的父级目录不存在
        File saveFile = new File(filesPath + File.separator + originalFilename);
        if (saveFile.exists()){
            originalFilename = System.currentTimeMillis() + "_" + mainName+ "." + extName;
            saveFile = new File(filesPath + File.separator + originalFilename); // D:\project\零一电科\技术资料\lingyidianke\zeroBackEnd\files\\121232312321323_aaa.png
        }
 
        file.transferTo(saveFile);
        String url = "http://" + ip + ":" + port + "/file/download/" + originalFilename;
        return Result.success(url);
    }
    @GetMapping("/download/{fileName}")
    public void download(HttpServletResponse response) throws IOException {
        ServletOutputStream outputStream = response.getOutputStream();
        outputStream.write(new byte[1024]);
    }
}

yml相关配置:

ip: localhost
server:
  port: 9090

给他做一个判断,

给它添加一个随机数,判断一个文件

定义一个变量设置文件名称

fileName就是实际存储到盘的名称

上传文件接口

这里的file是一致的

这里直接写Url就会出问题,这里要添加一些东西

在配置文件中添加ip注解

${ip}

ip: localhost

使用他时,用

@Value("${ip}")

放行成功,得到这个结果

文件的分割符File.separator 是文件的分隔符,加上是为了保证图片能够正常下载,目录和文件之间要有分隔符

上传图片最后显示成功

相关文章
|
1天前
|
Java
no main manifest attribute,软件开发部署SpringBoot要填配置,不填配置,报错哦@_@
no main manifest attribute,软件开发部署SpringBoot要填配置,不填配置,报错哦@_@
|
2天前
|
Java
软件开发常用之SpringBoot文件下载接口编写(下),Vue+SpringBoot文件上传下载预览,服务器默认上传是1M,可以调节,调节文件上传大小写法,图片预览,如何预览后下次还能看到,预览写法
软件开发常用之SpringBoot文件下载接口编写(下),Vue+SpringBoot文件上传下载预览,服务器默认上传是1M,可以调节,调节文件上传大小写法,图片预览,如何预览后下次还能看到,预览写法
|
2天前
|
存储 NoSQL Java
教程:Spring Boot与RocksDB本地存储的整合方法
教程:Spring Boot与RocksDB本地存储的整合方法
|
2天前
|
Java 文件存储
软件开发常用之SpringBoot文件上传和下载功能(上){fileName},利用hutool提供的依赖,拿到当前目录的路径,System.getProperty从变量获取路径 ,不存在就用mkdi
软件开发常用之SpringBoot文件上传和下载功能(上){fileName},利用hutool提供的依赖,拿到当前目录的路径,System.getProperty从变量获取路径 ,不存在就用mkdi
|
2天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的高校社团管理小程序的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的高校社团管理小程序的详细设计和实现(源码+lw+部署文档+讲解等)
11 1
|
2天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue的高校知识产权信息服务平台的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的高校知识产权信息服务平台的详细设计和实现(源码+lw+部署文档+讲解等)
13 1
|
2天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue的高校洗浴管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的高校洗浴管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
13 1
|
2天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的高校毕业生离校管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的高校毕业生离校管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
9 1
|
1天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue的学生成绩管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的学生成绩管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
16 0
|
1天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的校园论坛系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的校园论坛系统的详细设计和实现(源码+lw+部署文档+讲解等)
7 0