0
点赞
收藏
分享

微信扫一扫

java后端查看图片

书坊尚 2023-08-17 阅读 42

Java后端查看图片

引言

在日常的开发中,我们经常会遇到需要查看图片的需求。比如说,在社交媒体应用中,用户上传了一张照片,我们需要将其显示在页面上供其他用户查看。本文将介绍如何在Java后端中查看图片,并提供相应的代码示例。

准备工作

在开始之前,我们需要准备一些依赖项。首先,我们需要使用Java 8或更高版本。其次,我们需要使用一个Web框架,比如Spring Boot。最后,我们需要使用一个数据库来存储图片的相关信息,比如MySQL。

数据模型

在我们开始编写代码之前,让我们先来定义一下图片的数据模型。我们假设每张图片有一个唯一的ID,一个文件名,一个文件路径和一个创建时间。

// 数据模型
public class Image {
    private int id;
    private String fileName;
    private String filePath;
    private Date createTime;

    // 省略getter和setter方法
}

数据库

我们使用MySQL作为存储图片信息的数据库。我们需要创建一个名为images的表来存储图片的相关信息。

CREATE TABLE images (
    id INT PRIMARY KEY AUTO_INCREMENT,
    file_name VARCHAR(255) NOT NULL,
    file_path VARCHAR(255) NOT NULL,
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

图片上传

现在我们来实现图片上传的功能。首先,我们需要在前端页面中添加一个文件选择器,供用户选择要上传的图片。

<form action="/upload" method="post" enctype="multipart/form-data">
    <input type="file" name="file" accept="image/*">
    <input type="submit" value="上传">
</form>

然后,在后端代码中,我们需要解析上传的文件,并将其保存到服务器的文件系统中。

@RestController
public class ImageController {
    @PostMapping("/upload")
    public String uploadImage(@RequestParam("file") MultipartFile file) throws IOException {
        // 生成文件名
        String fileName = UUID.randomUUID().toString() + "." + getFileExtension(file.getOriginalFilename());

        // 保存文件到服务器
        String filePath = "/path/to/image/directory/" + fileName;
        File dest = new File(filePath);
        file.transferTo(dest);

        // 保存图片信息到数据库
        Image image = new Image();
        image.setFileName(file.getOriginalFilename());
        image.setFilePath(filePath);
        image.setCreateTime(new Date());
        imageDao.save(image);

        return "上传成功";
    }

    private String getFileExtension(String fileName) {
        return fileName.substring(fileName.lastIndexOf(".") + 1);
    }
}

图片展示

现在,我们已经成功地将图片保存到了服务器上。接下来,我们需要实现查看图片的功能。首先,我们需要在前端页面中显示图片的缩略图。

<!-- 在前端页面中显示图片缩略图 -->
<img src="/images/${image.fileName}" alt="图片">

然后,在后端代码中,我们需要提供一个接口来返回图片的原始数据。

@RestController
public class ImageController {
    @GetMapping("/images/{fileName}")
    public ResponseEntity<Resource> getImage(@PathVariable String fileName) throws IOException {
        // 从数据库中获取图片路径
        Image image = imageDao.findByFileName(fileName);

        // 返回图片的原始数据
        File file = new File(image.getFilePath());
        HttpHeaders headers = new HttpHeaders();
        headers.add("Content-Type", Files.probeContentType(file.toPath()));
        return new ResponseEntity<>(new ByteArrayResource(Files.readAllBytes(file.toPath())), headers, HttpStatus.OK);
    }
}

总结

在本文中,我们介绍了如何在Java后端中查看图片。我们首先定义了图片的数据模型,然后创建了一个数据库来存储图片的相关信息。接着,我们实现了图片上传和图片展示的功能。通过这些代码示例,我们可以很方便地在Java后端中查看图片。

类图

下面是图片相关的类的类图:

classDiagram
    class Image {
        +int id
        +String fileName
        +String filePath
        +Date createTime
    }

关系图

下面是图片相关的数据库表的关系图:

erDiagram
    images ||--o{ Image : "1" -- "1..*"

参考资料

  1. [Spring Boot](
  2. [MySQL]( 3
举报

相关推荐

0 条评论