在Spring Boot中使用七牛云上传图片到云存储

在Spring Boot中使用七牛云上传图片到云存储

简介

本篇博客将介绍如何在Spring Boot项目中利用七牛云进行图片上传并将图片存储在云存储中。七牛云是一个流行的云存储服务提供商,提供了稳定、高效的图片存储和管理服务。

准备工作

在开始之前,需要完成以下准备工作:

  1. 注册七牛云账号,并获取Access Key和Secret Key。
  2. 在七牛云控制台创建一个存储空间。

添加依赖

首先,在pom.xml文件中添加七牛云相关的依赖:

<dependency>
    <groupId>com.qiniu</groupId>
    <artifactId>qiniu-java-sdk</artifactId>
    <version>7.2.0</version>
</dependency>

配置七牛云信息

在application.properties或application.yml文件中添加七牛云相关的配置信息:

qiniu.accessKey=YOUR_ACCESS_KEY
qiniu.secretKey=YOUR_SECRET_KEY
qiniu.bucket=YOUR_BUCKET_NAME
qiniu.domain=YOUR_DOMAIN

编写上传图片的方法

接下来,我们需要编写一个用于上传图片的方法。可以创建一个名为QiniuService的服务类,并在其中添加以下代码:

import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.UploadManager;
import com.qiniu.util.Auth;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

@Service
public class QiniuService {

    @Value("${qiniu.accessKey}")
    private String accessKey;

    @Value("${qiniu.secretKey}")
    private String secretKey;

    @Value("${qiniu.bucket}")
    private String bucket;

    @Value("${qiniu.domain}")
    private String domain;

    public String uploadImage(MultipartFile file) {
        Configuration cfg = new Configuration();
        UploadManager uploadManager = new UploadManager(cfg);

        Auth auth = Auth.create(accessKey, secretKey);
        String upToken = auth.uploadToken(bucket);

        try {
            Response response = uploadManager.put(file.getBytes(), null, upToken);
            if (response.isOK()) {
                return domain + "/" + response.jsonToMap().get("key");
            }
        } catch (QiniuException ex) {
            // 处理上传异常
        } catch (IOException ex) {
            // 处理IO异常
        }

        return null;
    }
}

编写Controller

接下来,我们需要创建一个用于处理上传图片请求的Controller。可以创建一个名为ImageUploadController的类,并添加以下代码:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

@RestController
@RequestMapping("/api/images")


public class ImageUploadController {

    @Autowired
    private QiniuService qiniuService;

    @PostMapping("/upload")
    public String uploadImage(@RequestParam("file") MultipartFile file) {
        if (!file.isEmpty()) {
            String imageUrl = qiniuService.uploadImage(file);
            if (imageUrl != null) {
                return imageUrl;
            }
        }
        return "Failed to upload image.";
    }
}

测试上传图片功能

最后,我们可以编写一个简单的测试页面来测试上传图片的功能。创建一个名为index.html的HTML文件,并添加以下代码:

<!DOCTYPE html>
<html>
<head>
    <title>Image Upload Test</title>
</head>
<body>
    <form id="imageUploadForm" enctype="multipart/form-data">
        <input type="file" name="file" id="fileInput" accept="image/*">
        <button type="submit">Upload</button>
    </form>

    <script>
        document.getElementById("imageUploadForm").addEventListener("submit", function(event) {
            event.preventDefault();
            var formData = new FormData(this);

            fetch("/api/images/upload", {
                method: "POST",
                body: formData
            })
            .then(response => response.text())
            .then(imageUrl => {
                console.log("Uploaded image URL: " + imageUrl);
            })
            .catch(error => {
                console.error("Error uploading image: " + error);
            });
        });
    </script>
</body>
</html>

在浏览器中打开index.html文件,选择一张图片并点击"Upload"按钮,上传图片并在控制台输出图片的URL。

至此,我们已经完成了在Spring Boot中使用七牛云上传图片到云存储的过程。希望这篇博客能够对你有所帮助!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值