从零玩转文件上传之七牛云-qiniufileupload
title: 从零玩转文件上传之七牛云
date: 2022-03-27 02:21:00.478
updated: 2022-04-10 14:13:35.426
url: https://www.yby6.com/archives/qiniufileupload
categories:
- 从零玩转系列
- 文件上传
tags:
- 七牛云
前言
七牛云注册免费赠送这么多可用的套餐白嫖党怎能错过????
Show Time

进入控制台找到对象存储
根据图片来一步步走即可

创建完毕后会弹出一个是否绑定域名?
我们先整不绑定域名的(测试域名30天过期),后面再说绑定的

随便上传个文件看看能不能访问
进入 空间设置 把私有改为公有访问就可以进行访问了

测试地址: http://r9d51yx78.hd-bkt.clouddn.com/TERD5659[1]-6fff19b5e08d4d19a2b1b2d9ceffe8ea.jpeg
我们进行打开自己的密钥保存一份

代码操作文件上传
<!--引入七牛云的依赖-->
<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;
/**
* @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;
}
}
文件上传成功

使用key来进行访问
{
"hash":"http://r9d51yx78.hd-bkt.clouddn.com/llSfj5c2gQTtjMH8wpEZIV8pHV6P",
"key":"http://r9d51yx78.hd-bkt.clouddn.com/2022-03-27/f63231bef87f44e382f55027690e21ba-yangbuyiya"
}
测试域名(会过期)
http://r9d51yx78.hd-bkt.clouddn.com/2022-03-27/f63231bef87f44e382f55027690e21ba-yangbuyiya
使用自定义域名
进入对象存储-》域名管理

https直接点击ssl管理里面申请即可,不进行赘述.
加速域名随便填写二级域名
例如: qiniu.yby6.com
源站配置: 默认不动即可
缓存配置: (可选) 自定义->推荐配置 即可

复制CNAME,进入你的域名供应商
我的是阿里云找到域名->解析
等待七牛云与阿里云解析时间即可

示例

从零玩转文件上传之七牛云-qiniufileupload的更多相关文章
- Dcat admin 多文件上传,七牛云云端上传
进入官网 Dcat Admin - Php后台开发框架 这里要选择1.x 下面来安装框架 安装完laravel之后,需要修改.env文件,设置数据库链接设置正确 安装 dcat-admin comp ...
- struts 多文件上传 annotation注解(零配置)+ ajaxfileupload + 异步 版本
[本文简介] struts 多文件上传.基于”零配置“+"ajaxfileupload" 的一个简单例子. [导入依赖jar包] jquery-1.7.2.js : http:// ...
- Spring MVC-从零开始-文件上传(未完待续)
Spring MVC-从零开始-文件上传(未完待续)
- Spring Boot 2.x(十六):玩转vue文件上传
为什么使用Vue-Simple-Uploader 最近用到了Vue + Spring Boot来完成文件上传的操作,踩了一些坑,对比了一些Vue的组件,发现了一个很好用的组件--Vue-Simple- ...
- salesforce 零基础学习(四十二)简单文件上传下载
项目中,常常需要用到文件的上传和下载,上传和下载功能实际上是对Document对象进行insert和查询操作.本篇演示简单的文件上传和下载,理论上文件上传后应该将ID作为操作表的字段存储,这里只演示文 ...
- 第一零四天上课 PHP TP框架下的文件上传
控制器代码(TestController.class.php) <?php namespace Home\Controller; use Home\Controller\EmptyControl ...
- webform文件上传、图片水印、验证码
文件上传: 所用控件:FileUpload 使用时的思路: 1.判断用户是否选中了文件 FileUpload.FileName获取选中的文件名,判断长度,如果长度大于零就代表已经选择了文件 JS端:通 ...
- Nancy之文件上传与下载
零.前言 由于前段时间一直在找工作,找到工作后又比较忙,又加班又通宵的赶项目,所以博客有段时间没有更新了. 今天稍微空闲一点,碰巧前几天看到有园友问我Nancy中下载文件的问题,然后就趁着休息的时间写 ...
- 在WebBrowser中通过模拟键盘鼠标操控网页中的文件上传控件(转)
引言 这两天沉迷了Google SketchUp,刚刚玩够,一时兴起,研究了一下WebBrowser. 我在<WebBrowser控件使用技巧分享>一文中曾谈到过“我现在可以通过WebBr ...
- 文件上传漏洞演示脚本之js验证
文件上传漏洞演示脚本之js验证 0 0 716 关于文件上传漏洞,想必玩web安全的同学们都有接触,之前本站也发布过一篇文章介绍文件上传漏洞的各种绕过方法,但是只是有文档却没有演示代码 ...
随机推荐
- OCI云主机环境如何上传下载文件
OCI云主机的连接是使用密钥而非用户密码连接. 之前使用的非主流的一个SSH工具,正常连接主机都没问题,但需要手工输入用户. 可是在选择SFTP时,始终找不到用户名的设置,导致密钥连接的SFTP始终失 ...
- Kong网关
Kong网关 一.kong网关核心概念 1. Upstream upstream 对象表示虚拟主机名,可用于通过多个服务对传入请求进行负载远的 2. Target 目标ip地址/主机名,其端口表示后端 ...
- GO 中的时间操作(time & dateparse)【GO 基础】
〇.前言 日常开发过程中,对于时间的操作可谓是无处不在,但是想实现时间自由还是不简单的,多种时间格式容易混淆,那么本文将进行梳理,一起学习下. 官方提供的库是 time,功能很全面,本文也会详细介绍. ...
- Chapter 6. Build Script Basics
Chapter 6. Build Script Basics 6.1. Projects and tasks Everything in Gradle sits on top of two basic ...
- Java21上手体验-分代ZGC和虚拟线程
一.导语 几天前Oracle刚刚发布了Java21, 由于这是最新的LTS版本,引起了大家的关注. 我也第一时间在个人项目中进行了升级体验. 一探究竟,和大家分享. 二.Java21更新内容介绍 官方 ...
- 探索Redis与MySQL的双写问题
本文已收录至GitHub,推荐阅读 Java随想录 微信公众号:Java随想录 原创不易,注重版权.转载请注明原作者和原文链接 目录 双写一致问题 缓存读写策略 Cache-Aside Pattern ...
- VLAN虚拟网络
VLAN 名称:vlan 虚拟局域网(virtual LAN) 用途 由于交换机所有的端口都在同一广播域,只要发送广播会产生大量的垃圾信息,同时会有病毒的安全隐患(病毒). 为了解决上述问题 1.物理 ...
- 虹科喜报 | 虹科技术工程师【国内首批】拿下Redis认证开发者证书!
要说虹科数据库技术工程师有多强悍,认证考试2022年12月上线,次年2月就以全国首批速度强势通过考试,并于两周后正式收到[Redis认证开发人员]证书! 虹科小云忍不住浅浅炫耀一下: 或许大家对Red ...
- 使用fontforge进行字体拆分
fontforge官方网站 游戏开发为了节省内存和资源下载量,需要把字体不用的字删掉,或者拆成多个字体逐级加载,批量操作用UI就比较难搞了,用fontforge搞起来比较顺手 安装fontforge后 ...
- springboot在线人数统计
在线人数统计 笔者做了一个网站,需要统计在线人数. 在线有两种: 一.如果是后台系统如果登录算在线,退出的时候或者cookie.token失效的时候就算下线 二.如果是网站前台,访问的时候就算在线 今 ...


