从零玩转文件上传之七牛云1

简介: 从零玩转文件上传之七牛云

前言

七牛云注册免费赠送这么多可用的套餐白嫖党怎能错过???

Show Time

image_1648316454441.png

进入控制台找到对象存储

根据图片来一步步走即可

image_1648316679347.png

创建完毕后会弹出一个是否绑定域名?

我们先整不绑定域名的(测试域名30天过期),后面再说绑定的

image_1648316777405.png

随便上传个文件看看能不能访问

进入 空间设置 把私有改为公有访问就可以进行访问了

image_1648317167802.png

测试地址: http://r9d51yx78.hd-bkt.clouddn.com/TERD5659[1]-6fff19b5e08d4d19a2b1b2d9ceffe8ea.jpeg

我们进行打开自己的密钥保存一份

image_1648316951402.png

代码操作文件上传

<!--引入七牛云的依赖-->
        <dependency>
            <groupId>com.qiniu</groupId>
            <artifactId>qiniu-java-sdk</artifactId>
            <version>[7.7.0, 7.7.99]</version>
        </dependency>

七牛云文件上传配置文件

image_1648317550252.png

import com.qiniu.storage.Region;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
 * @program: yangbuyi_video
 * @ClassName: qiniuOssConstant
 * @author: Yang buyi
 * @desc: |七牛云文件上传配置
 **/
@Data
@Component
@ConfigurationProperties(prefix = "qiniu")
public class QiniuOssProperties {
    //声明机房的区域 默认 华东
    private Region region = Region.huadong();
    //AK
    private String accessKey = "ak";
    //SK
    private String secretKey = "sk";
    //空间名称
    private String bucket = "前面设置的空间名称";
    //请求地址   前面创建免费送的测试域名
    private String url = "http://r9d51yx78.hd-bkt.clouddn.com/";
}

创建测试类

// Create By Yang Shuai,Date 2022/3/27:02:02
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import com.alibaba.fastjson.JSON;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;
import org.junit.Test;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.*;
public class QinUtil {
    QiniuOssProperties qiniuOssProperties = new QiniuOssProperties();
    @Test
    public void t1() {
        File file = new File("/Users/yangbuyi/Documents/图片/Surface Stusio default wallpaper.png");
        //构造一个带指定Region对象的配置类
        Configuration cfg = new Configuration(qiniuOssProperties.getRegion());
        //创建文件上传的管理器
        UploadManager uploadManager = new UploadManager(cfg);
        //默认不指定key的情况下,以文件内容的hash值作为文件名
        String fileName = file.getName();
        //统一文件到日文件夹
        String key = DateUtil.today() + "/" + IdUtil.simpleUUID() + "-" + "yangbuyiya";
        try {
            byte[] uploadBytes = File2byte(file);
            // 获取文件流
            InputStream input = new ByteArrayInputStream(uploadBytes);
            //创建一个认证的对象
            Auth auth = Auth.create(qiniuOssProperties.getAccessKey(), qiniuOssProperties.getSecretKey());
            //获取token
            String upToken = auth.uploadToken(qiniuOssProperties.getBucket());
            // 需传递token进行文件上传
            Response response = uploadManager.put(input, key, upToken, null, null);
            //解析上传成功的结果
            DefaultPutRet defaultPutRet = JSON.parseObject(response.bodyString(), DefaultPutRet.class);
            // 返回路径
            // qiniuOssProperties.getUrl() + defaultPutRet.hash
            defaultPutRet.key = qiniuOssProperties.getUrl() + defaultPutRet.key;
            defaultPutRet.hash = qiniuOssProperties.getUrl() + defaultPutRet.hash;
            System.out.println(JSON.toJSONString(defaultPutRet));
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
    public static byte[] File2byte(File tradeFile){
        byte[] buffer = null;
        try
        {
            FileInputStream fis = new FileInputStream(tradeFile);
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            byte[] b = new byte[1024];
            int n;
            while ((n = fis.read(b)) != -1)
            {
                bos.write(b, 0, n);
            }
            fis.close();
            bos.close();
            buffer = bos.toByteArray();
        }catch (FileNotFoundException e){
            e.printStackTrace();
        }catch (IOException e){
            e.printStackTrace();
        }
        return buffer;
    }
}

文件上传成功

image_1648318523057.png

使用key来进行访问

{
"hash":"http://r9d51yx78.hd-bkt.clouddn.com/llSfj5c2gQTtjMH8wpEZIV8pHV6P",
"key":"http://r9d51yx78.hd-bkt.clouddn.com/2022-03-27/f63231bef87f44e382f55027690e21ba-yangbuyiya"
}


相关文章
|
9月前
|
弹性计算 前端开发 小程序
微信小程序上传文件至阿里云OSS直传(java后端签名+前端直传)
当前的通用文件上传方式是通过前端上传到服务器,再由服务器转存至对象存储。这种方式在处理小文件时效率尚可,但大文件上传因受限于服务器带宽,速度较慢。例如,一个100MB的文件在5Mbps带宽的阿里云ECS上上传至服务器需160秒。为解决此问题,可以采用后端签名的方式,使微信小程序直接上传文件到阿里云OSS,绕过服务器中转。具体操作包括在JAVA后端引入相关依赖,生成签名,并在微信小程序前端使用这个签名进行文件上传,注意设置正确的请求头和formData参数。这样能提高大文件上传的速度。
1400 1
|
存储 JavaScript 安全
阿里 OSS图片上传 —— 原生JS中使用
这是最近开发遇到的一个坑,&quot;可爱&quot;的前辈们留下来的宝贵财产,很不幸的是,一行注释都没给,所以开心(被迫)的去研究了一下文档. 然而发现官方文档又臭又长,于是自己捣鼓了下,总算是搞出来了.
1308 0
阿里 OSS图片上传 —— 原生JS中使用
|
对象存储 容器
Typora配置阿里云OSS作为图床上传图片
Typora配置阿里云OSS作为图床上传图片
850 0
|
对象存储
阿里云对象存储oss+picgo+typora实现步骤及无法上传图片解决方案
阿里云对象存储oss+picgo+typora实现步骤及无法上传图片解决方案
528 0
阿里云对象存储oss+picgo+typora实现步骤及无法上传图片解决方案
|
存储 API 开发工具
使用阿里云对象存储OSS+PicGo搭建图床
使用阿里云对象存储OSS+PicGo搭建图床
6527 0
使用阿里云对象存储OSS+PicGo搭建图床
|
6月前
|
存储 JavaScript 前端开发
Vue中实现图片上传,上传后的图片回显,存储图片到服务器 【使用对象存储OSS】
这篇文章介绍了在Vue中实现图片上传到阿里云OSS对象存储服务的完整流程,包括服务端签名直传的前提知识、后端设置、前端组件封装以及图片上传和回显的效果展示。
|
域名解析 对象存储 数据安全/隐私保护
如何 Wordpress 使用 OSS 上传图片、文件
如何使用 OSS 上传 Wordpress 的图片文件
2241 2
|
存储 前端开发 JavaScript
七牛云还能这么玩
七牛云还能这么玩
116 0
|
缓存 网络安全 对象存储
从零玩转文件上传之七牛云2
从零玩转文件上传之七牛云
98 0
|
存储 Java 应用服务中间件
七牛云和阿里云OSS存储图片服务器使用
七牛云和阿里云OSS存储图片服务器使用
1869 0