当前位置:首页 > 技术 > 正文内容

七牛云文件上传实现指南

访客 技术 2026年7月2日 1

本文介绍如何使用七牛云进行文件上传,并通过代码实现具体功能。

注册与配置

首先,注册七牛云账户并进入控制台,找到对象存储服务。根据指引创建存储空间。

在创建完成后,可以选择是否绑定自定义域名。为简化测试流程,可暂时不绑定域名(测试域名有效期为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解析生效即可。

示例

成功上传文件后,可通过以下方式访问:

示例图片

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。