七牛云文件上传实现指南
本文介绍如何使用七牛云进行文件上传,并通过代码实现具体功能。
注册与配置
首先,注册七牛云账户并进入控制台,找到对象存储服务。根据指引创建存储空间。
在创建完成后,可以选择是否绑定自定义域名。为简化测试流程,可暂时不绑定域名(测试域名有效期为30天)。后续可根据需求绑定自定义域名。
将存储空间设置为公有访问模式,以便直接通过URL访问上传的文件。
代码实现
引入依赖
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>[7.7.0, 7.7.99]</version>
</dependency>
配置类
创建一个配置类以保存七牛云相关参数。
import com.qiniu.storage.Region;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Data
@Component
@ConfigurationProperties(prefix = "qiniu")
public class QiniuConfig {
private Region region = Region.huadong();
private String accessKey;
private String secretKey;
private String bucketName;
private String domain;
}
上传工具类
编写一个工具类用于执行文件上传操作。
import com.alibaba.fastjson.JSONObject;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.UploadManager;
import com.qiniu.util.Auth;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
public class FileUploader {
private final QiniuConfig qiniuConfig;
public FileUploader(QiniuConfig qiniuConfig) {
this.qiniuConfig = qiniuConfig;
}
public String uploadFile(String filePath) throws Exception {
File file = new File(filePath);
Configuration cfg = new Configuration(qiniuConfig.getRegion());
UploadManager uploadManager = new UploadManager(cfg);
String key = generateUniqueFileName(file.getName());
try (InputStream inputStream = new FileInputStream(file)) {
Auth auth = Auth.create(qiniuConfig.getAccessKey(), qiniuConfig.getSecretKey());
String upToken = auth.uploadToken(qiniuConfig.getBucketName());
Response response = uploadManager.put(inputStream, key, upToken, null, null);
JSONObject result = JSONObject.parseObject(response.bodyString());
return qiniuConfig.getDomain() + "/" + result.getString("key");
}
}
private String generateUniqueFileName(String originalName) {
return System.currentTimeMillis() + "-" + originalName;
}
}
测试类
编写测试类验证文件上传功能。
import org.junit.jupiter.api.Test;
public class FileUploadTest {
@Test
public void testUpload() throws Exception {
QiniuConfig config = new QiniuConfig();
config.setAccessKey("your-access-key");
config.setSecretKey("your-secret-key");
config.setBucketName("your-bucket-name");
config.setDomain("http://your-domain.com");
FileUploader uploader = new FileUploader(config);
String url = uploader.uploadFile("/path/to/your/file.jpg");
System.out.println("Uploaded URL: " + url);
}
}
绑定自定义域名
在七牛云控制台的对象存储中,进入"域名管理"页面,添加自定义域名。申请SSL证书后,填写加速域名(如:qiniu.yby6.com),完成源站和缓存配置。
复制CNAME记录至你的域名供应商(如阿里云)解析设置中,等待DNS解析生效即可。
示例
成功上传文件后,可通过以下方式访问: