springboot-实现平台上传图片的步骤(本地)

1.

# Tomcat
server:
  tomcat:
    uri-encoding: UTF-8
    max-threads: 1000
    min-spare-threads: 30
  port: 8080
  connection-timeout: 5000ms
  servlet:
    context-path: /wedu

spring:
  # 环境 dev|test|prod
  profiles:
    active: dev
  # jackson时间格式化
  jackson:
    time-zone: GMT+8
    date-format: yyyy-MM-dd HH:mm:ss
  servlet:
    multipart:
      max-file-size: 100MB
      max-request-size: 100MB
      enabled: true
  web:
    resources:
      static-locations: classpath:/static/images

web 的resources部分 和 multipart部分 设置上传的地址 和上传文件大小

因为tomcat的大小默认是不超过1Mb

2.

package com.wedu.modules.chejian.controller;

import cn.hutool.core.io.FileUtil;
//@Value注解是springframework下的注解
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;

import com.wedu.common.utils.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.ServletOutputStream;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletResponse;
//import java.io.File;
import java.io.File;
import java.io.IOException;
import java.net.URLEncoder;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.UUID;

import static org.aspectj.weaver.tools.cache.SimpleCacheFactory.path;

@RestController
@RequestMapping("/sys/file")
public class SysFileController {
    /**
     * 文件上传接口
     * @param file
     * @return
     * @throws IOException
     * 对应与前端图片上传路径:http://localhost:8081/file/upload/img
     */
    @PostMapping("/upload")
    public String upload(@RequestParam MultipartFile file, ServletRequest request) throws IOException {
        String avatar = file.getOriginalFilename();

        // 生成UUID
        avatar = UUID.randomUUID().toString().replace("-", "") + avatar.substring(avatar.lastIndexOf("."));

        // 将文件保存到本地
        String avatarUrl = null;

        if (avatar != null) {
            // 生成本地地址,将地址保存到数据库
            avatarUrl = "http://localhost:8080/wedu/upload/" + avatar;
            // 将文件保存到本地地址
            try {
//                files.get(0).transferTo(new File("G:\\IDEA2023\\CatAndDogDiaryBackEnd\\CatAndDogEnd\\src\\main\\resources\\static\\avatar\\" + avatar));
                file.transferTo(new File("D:\\725项目\\解压\\upload\\" + avatar));
            } catch (IOException e) {
                throw new RuntimeException(e);
            }


        }
        return avatarUrl;

    }}
   /*当调用此接口时,upload 方法做了以下工作:
接收前端通过 HTTP POST 请求发送的文件。
生成一个唯一的文件名(基于 UUID)。
将文件保存到本地指定的目录中。
构造文件的访问 URL 并返回给前端。
   * */



/*具体来说,在调用 upload 方法进行文件上传时,该方法执行了以下操作:

获取原始文件名:从 MultipartFile 中获取上传文件的原始文件名。
生成唯一文件名:为了防止文件名冲突,使用 UUID 生成一个新的文件名。
构造文件路径:构建一个指向文件的新位置的 URL。
保存文件:将文件保存到本地的指定目录。注意这里的路径是 D:\\725项目\\解压\\upload\\,确保这个路径在你的系统上是可写的,并且存在。
返回文件 URL:构造一个文件的访问 URL,并将其返回给调用方。
*
* */

3.前端部分

user.vue部分

 user-add-or-update.vue

好的,我可以帮您回答关于Spring Boot实现文件上传下载的步骤。 1. 依赖引入 在pom.xml文件中添加以下依赖: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-io</artifactId> <version>1.3.2</version> </dependency> ``` 2. 配置文件 在application.properties文件中添加以下配置: ``` spring.servlet.multipart.max-file-size=128MB spring.servlet.multipart.max-request-size=256MB ``` 3. 文件上传 在Controller中添加以下代码: ``` @PostMapping("/uploadFile") public String uploadFile(@RequestParam("file") MultipartFile file, RedirectAttributes redirectAttributes) { String fileName = StringUtils.cleanPath(file.getOriginalFilename()); try { // 保存文件到本地 FileCopyUtils.copy(file.getInputStream(), new FileOutputStream("upload/" + fileName)); } catch (IOException e) { e.printStackTrace(); } redirectAttributes.addFlashAttribute("message", "You successfully uploaded " + fileName + "!"); return "redirect:/uploadStatus"; } ``` 4. 文件下载 在Controller中添加以下代码: ``` @GetMapping("/downloadFile/{fileName:.+}") public ResponseEntity<Resource> downloadFile(@PathVariable String fileName, HttpServletRequest request) { // 加载文件资源 Resource resource = loadFileAsResource(fileName); // 确定MIME类型 String contentType = null; try { contentType = request.getServletContext().getMimeType(resource.getFile().getAbsolutePath()); } catch (IOException ex) { ex.printStackTrace(); } // 默认MIME类型为二进制流 if (contentType == null) { contentType = "application/octet-stream"; } // 构建响应 return ResponseEntity.ok() .contentType(MediaType.parseMediaType(contentType)) .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + resource.getFilename() + "\"") .body(resource); } private Resource loadFileAsResource(String fileName) { Resource resource = new FileSystemResource("upload/" + fileName); if (resource.exists()) { return resource; } else { throw new RuntimeException("File not found: " + fileName); } } ``` 以上就是Spring Boot实现文件上传下载的步骤。如果您有任何疑问或需求,请随时告诉我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值