首页 > 其他分享 >代码实现上传Base64图片到七牛云OSS

代码实现上传Base64图片到七牛云OSS

时间:2024-03-11 14:44:54浏览次数:20  
标签:牛云 Base64 String OSS base64 bytes static key new

依赖

<!-- https://mvnrepository.com/artifact/com.qiniu/qiniu-java-sdk -->
<dependency>
	<groupId>com.qiniu</groupId>
	<artifactId>qiniu-java-sdk</artifactId>
	<version>7.14.0</version>
</dependency>

<dependency>
	<groupId>com.alibaba.fastjson2</groupId>
	<artifactId>fastjson2</artifactId>
	<version>2.0.41</version>
</dependency>

工具类

使用时将关键参数替换即可

public class QiNiuOssUtil {

    private static final String ACCESS_KEY = "*******";
    private static final String SECRET_KEY = "*******";
    private static final String DOMAIN = "******";
    private static final String BUCKET = "*****";

    public static String upload(byte[] bytes, String key) {
        return upload(new ByteArrayInputStream(bytes), key);
    }

    public static String upload(InputStream inputStream, String key) {
        Configuration cfg = new Configuration(Region.huanan());

        UploadManager uploadManager = new UploadManager(cfg);
        Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
        String uploadToken = auth.uploadToken(BUCKET);
        try {
            Response response = uploadManager.put(inputStream, key, uploadToken, null, null);
            DefaultPutRet putRet = JSON.parseObject(response.bodyString(), DefaultPutRet.class);
            return new DownloadUrl(DOMAIN, false, putRet.key).buildURL();
        } catch (QiniuException e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * 上传base64格式图片
     * @param base64
     * @return
     */
    public static String uploadBase64Img(String base64) {
        Base64.Decoder decoder = Base64.getDecoder();
        byte[] bytes = decoder.decode(base64.substring(base64.indexOf(",") + 1));
        String suffix = base64.substring(base64.indexOf("/") + 1, base64.indexOf(";"));
        return upload(bytes, Md5.md5(bytes) + "." + suffix);
    }
}

标签:牛云,Base64,String,OSS,base64,bytes,static,key,new
From: https://www.cnblogs.com/luyifo/p/18066043

相关文章

  • 解决uni-app在App端上传图片时路径转Base64的问题
    解决uni-app在App端上传图片时路径转Base64的问题在用uni-app开发项目的时候大家都会遇到这么一个问题,就是上传图片时在App上拿到的是文件路径,然而后端要接收的却是Base64字符串,这就尴尬了,在App端又无法调用WebApi(例如:BlobfileReader等),自己写插件的话又很麻烦,因此我找了很久才......
  • OSSFS 挂载 OSS当本地硬盘用
    OSS是什么OSS是阿里云存储服务,简单来说OSS就是一块网络硬盘。特点是便宜,但便宜也有代价,那就是性能不高,如果只是作为个人存文件用,我认为完全够用。为什么要挂载流量收费因为直接访问(类似网盘)要消耗流量,收费!而挂载到服务器,通过服务器访问,可以走内部通道(服务器连接OSS),免流量。当然,......
  • 今天BOSS约了个面试,HR直接发我一道面试题
    前言在电商、外卖、预约服务等场景中,订单超时自动取消是一个常见的业务需求。这一功能不仅提高了系统的自动化程度,还为用户提供了更好的体验。需求如下:TODO如果用户在生成订单后一定时间未支付,则系统自动取消订单。接下来就用SpringBoot实现订单超时未支付自动取消的几......
  • 微信小程序开发:循环定时删除阿里云oss上传的文件
    上文有说到我们开发了定时删除阿里云oss的功能,但是一次只能删除10条。本文我们做到一次删除全部过期的文件。实现:使用while循环,在循环里获取是否还有已过期的,没有就break掉,有就走删除逻辑。开始代码部分: 逻辑还是比较简单的,一个while循环,每次查找20条已过期的数据,如果没有......
  • 2024/3/5如何在excel中支持base64编码解码
    在excel中按alt+f11(打开VisualBasic工具)。添加模块,粘贴一下代码`FunctionEncodeBase64(text$)DimbWithCreateObject("ADODB.Stream").Open:.Type=2:.Charset="utf-8".WriteTexttext:.Position=0:.Type=1:b=.ReadWithCreateObject("Micr......
  • 小程序开发:定时删除上传的阿里云oss文件
    上文说到:我们接入了阿里云的oss,以及阿里云的人像动漫化接口。本文要完成的功能:用户上传到阿里云oss的图片需要在一天后定时删除,否则占用了存储空间。大致流程:用户上传阿里云oss成功后,将上传的文件名记录到一张表,记录有一个字段日期为过期时间,定时任务检测到过期后,先删除oss文件,......
  • 探索图片与Base64编码的优势与局限性
    一、图片和Base64编码的关系:图片是一种常见的媒体文件格式,可以通过URL进行访问和加载。Base64编码是一种将二进制数据转换为ASCII字符的编码方式,可以将图片数据转换为字符串形式。图片Base64相互转换|一个覆盖广泛主题工具的高效在线平台(amd794.com)https://amd794.c......
  • 2024CVPR_Misalignment-Robust Frequency Distribution Loss for Image Transformatio
    一、Motivation1、目前的方法严重依赖于具有像素级对齐的精确对齐配对数据集(感觉像是说L1,不确定==)二、Contribution使用离散傅里叶变换(DFT)将图像特征转换到频域,在计算预测图像和参考值GT振幅和相位的SWD(Sliced Wasserstein Distance)距离三、Network Loss设计感觉比......
  • vc++ 使用base64 编码与解码
        Base64原理Base64是一种基于64个可打印字符来表示二进制数据的表示方法。由于2^6=64,所以每6个比特为一个单元,对应某个可打印字符。3个字节有24个比特,对应于4个Base64单元,即3个字节可由4个可打印字符来表示。它可用来作为电子邮件的传输编码。在B......
  • vue3+vite使用vue-pdf-embed或者pdf-vue3预览 PDF 文件(能躲避 XSS 攻击,需要 pdf 文件
    1.使用vue-pdf-embed1.npm安装所需插件[email protected]@0.1.62.封装组件(创建pdfPriview.index文件)<template><divclass="pdf-preview"> <vue-pdf-embed :source="state.source" v-for="pageinstate......