springboot保存图片到项目路径并返回可访问的url地址

方法如下:

1、先定义访问地址(只包括协议、ip地址和端口号)

private  final String URL = "http://localhost:1111/";

2、通过String path = ClassUtils.getDefaultClassLoader().getResource("文件名").getPath();获取classes下的文件地址

3、连接URL和文件名构造url访问地址,连接path和文件名构造保存路径

@PostMapping("/single")
    public JSONResult singleImage(@RequestParam("file") MultipartFile file, HttpServletRequest request) throws FileNotFoundException {  //参数名需与前端文件标签名一样
        //获取项目classes/static的地址
        String path = ClassUtils.getDefaultClassLoader().getResource("static").getPath();
        String fileName = file.getOriginalFilename();  //获取文件名
        //图片访问URI(即除了协议、地址和端口号的URL)
        String url_path = "image"+File.separator+fileName;
        log.info("图片访问uri:"+url_path);
        String savePath = path+File.separator+url_path;  //图片保存路径
        log.info("图片保存地址:"+savePath);
        File saveFile = new File(savePath);
        if (!saveFile.exists()){
            saveFile.mkdirs();
        }
        try {
            file.transferTo(saveFile);  //将临时存储的文件移动到真实存储路径下
        } catch (IOException e) {
            e.printStackTrace();
        }
        //返回图片访问地址
        log.info("访问URL:"+URL+url_path);
        return JSONResult.ok(URL+url_path);
    }

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
好的,下面是一个简单的示例代码,演示如何使用Spring Boot将图像上到本地文件夹并将其存储到数据库中,然后在前端使用。 首先,您需要在您的Spring Boot项目中添加以下依赖项: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.3</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-io</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> ``` 然后,您需要编写一个Controller来处理上请求。以下是一个示例代码: ```java @RestController @RequestMapping("/api") public class ImageController { @Value("${upload.path}") private String uploadPath; @Autowired private ImageRepository imageRepository; @PostMapping("/upload") public ResponseEntity<String> uploadImage(@RequestParam("file") MultipartFile file) throws IOException { String fileName = StringUtils.cleanPath(file.getOriginalFilename()); Path path = Paths.get(uploadPath + fileName); Files.write(path, file.getBytes()); Image image = new Image(fileName, file.getContentType(), path.toString()); imageRepository.save(image); return ResponseEntity.ok("File uploaded successfully"); } } ``` 在上面的代码中,我们首先使用@Value注释注入了一个名为“upload.path”的配置项,用于指定文件的存储路径。然后,我们注入了一个ImageRepository,用于将图像存储到数据库中。我们创建了一个名为“uploadImage”的POST请求处理程序,该处理程序使用@RequestParam注释来接收上的文件。我们使用StringUtils.cleanPath()方法来确保文件名不包含任何非法字符,并使用Files.write()方法将文件写入本地文件夹中。我们创建了一个新的Image对象来保存文件的元数据和存储路径,并将其保存到数据库中。最后,我们返回一个成功的响应。 接下来,您需要编写一个Image实体类,用于将图像元数据存储到数据库中。以下是一个示例代码: ```java @Entity @Table(name = "images") public class Image { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(length = 100) private String name; @Column(length = 100) private String type; private String path; // constructors, getters and setters } ``` 在上面的代码中,我们创建了一个名为“images”的表,用于存储图像。我们使用@Id注释将id字段标记为主键,并使用@GeneratedValue注释指定自动生成主键值。我们还使用@Column注释指定了name和type字段的长度,并添加了一个path字段来存储图像的存储路径。 最后,您需要编写一个简单的前端页面来上图像。以下是一个示例代码: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Upload Image</title> </head> <body> <h1>Upload Image</h1> <form action="/api/upload" method="post" enctype="multipart/form-data"> <input type="file" name="file"> <br><br> <input type="submit" value="Upload"> </form> </body> </html> ``` 在上面的代码中,我们创建了一个简单的HTML表单,用于上图像。我们使用<form>元素指定了上图像的URL和请求方法,并使用<input>元素添加了一个文件选择器和一个提交按钮。 希望这个示例能够帮助您了解如何使用Spring Boot将图像上到本地文件夹并将其存储到数据库中,然后在前端使用。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值