上传文件-给文件起随机名

package com.atguigu.utils;

import com.google.gson.Gson;
import com.qiniu.common.QiniuException;
import com.qiniu.common.Zone;
import com.qiniu.http.Response;
import com.qiniu.storage.BucketManager;
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 java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

/**
 * 七牛云工具类
 */
public class QiniuUtils {

    public  static String accessKey = "BrrMVEQCE6ijrnHX-gGDVVk3e0vY8mAQQEyB_Zzq";
    public  static String secretKey = "uaJNMOUGSkZqb3xce-gv4Y-2f0f5_X5VQO-v4lL0";
    public  static String bucket = "meinian888";

    public static void upload2Qiniu(String filePath,String fileName){
        //构造一个带指定Zone对象的配置类
        Configuration cfg = new Configuration(Zone.zone2());
        UploadManager uploadManager = new UploadManager(cfg);
        Auth auth = Auth.create(accessKey, secretKey);
        String upToken = auth.uploadToken(bucket);
        try {
            Response response = uploadManager.put(filePath, fileName, upToken);
            //解析上传成功的结果
            DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
        } catch (QiniuException ex) {
            Response r = ex.response;
            try {
                System.err.println(r.bodyString());
            } catch (QiniuException ex2) {
                //ignore
            }
        }
    }

    //上传文件
    public static void upload2Qiniu(byte[] bytes, String fileName){
        //构造一个带指定Zone对象的配置类
        Configuration cfg = new Configuration(Zone.zone2());
        //...其他参数参考类注释
        UploadManager uploadManager = new UploadManager(cfg);

        //默认不指定key的情况下,以文件内容的hash值作为文件名
        String key = fileName;
        Auth auth = Auth.create(accessKey, secretKey);
        String upToken = auth.uploadToken(bucket);
        try {
            Response response = uploadManager.put(bytes, key, upToken);
            //解析上传成功的结果
            DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
            System.out.println(putRet.key);
            System.out.println(putRet.hash);
        } catch (QiniuException ex) {
            Response r = ex.response;
            System.err.println(r.toString());
            try {
                System.err.println(r.bodyString());
            } catch (QiniuException ex2) {
                //ignore
            }
        }
    }

    //删除文件
    public static void deleteFileFromQiniu(String fileName){
        //构造一个带指定Zone对象的配置类
        Configuration cfg = new Configuration(Zone.zone2());
        String key = fileName;
        Auth auth = Auth.create(accessKey, secretKey);
        BucketManager bucketManager = new BucketManager(auth, cfg);
        try {
            bucketManager.delete(bucket, key);
        } catch (QiniuException ex) {
            //如果遇到异常,说明删除失败
            System.err.println(ex.code());
            System.err.println(ex.response.toString());
        }
    }
}

Original: https://www.cnblogs.com/zhang-a-d/p/16729270.html
Author: 他乡一故知
Title: 上传文件-给文件起随机名

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/617106/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Java HashMap

    一些数据结构的操作性能 数组:查找快,新增、删除慢 采用一段连续的存储单元来存储数据 指定下标的查找,时间复杂度为 O(1) 通过给定值进行查找,需要遍历数组,逐一比对给定关键字和…

    Java 2023年5月29日
    0112
  • java 连接 redis

    Jedis 导入对应的依赖 redis.clients jedis 4.2.3 com.alibaba fastjson 1.2.79 连接数据库 记得在本地打开 redis //…

    Java 2023年6月16日
    0111
  • Postgres14.4(Docker安装)

    Postgres14.4(Docker安装) 一,Docker拉取镜像 docker pull postgres:14.4 #检查镜像是否拉取成功 docker images | …

    Java 2023年6月15日
    079
  • 第一阶段:SpringBoot源码分析

    1.1 SpringBoot 案例实现 SpringBoot默认只扫描…

    Java 2023年6月7日
    088
  • 用 Vim 编辑 Markdown 时直接粘贴图片

    我习惯使用 Vim 编辑 Markdown 文件,一直存在一个痛点就是粘贴图片很不方便。 前后对比 我以前常用的操作流程: 复制图片/截图; 在保存图片对话框里一层层点选保存路径,…

    Java 2023年6月5日
    081
  • 关于接口设计的思考–我们真的需要这么多入参吗

    最近,我改造一个旧接口时发现,这个接口有 30 多个入参,而事实上并不需要那么多,而且,这个接口还存在比较大的安全隐患。所以,关于如何设计接口入参,我想谈谈自己的一些想法。 当然,…

    Java 2023年6月14日
    072
  • 【Java面试】面试自閟了!工作5年的小伙伴今天面试被吊打问我,并行和并发有什么区别?

    “并行和并发有什么区别?”关于这个问题,很多工作5年以上的同学都回答不出来。或者说,自己有一定的理解,但是不知道怎么表达。大家好,我是Mic,一个工作了14…

    Java 2023年6月16日
    090
  • 设计模式之单例模式

    1、什么是单例模式 ​ 单例模式是指保证 某个类在整个软件系统中只有一个对象实例,并且该类仅提供一个返回其对象实例的方法(通常为静态方法) 2、单例模式的种类 ​ 经典的单例模式实…

    Java 2023年6月8日
    083
  • 9、线程礼让yield

    线程礼让: 1、让正在执行的线程为暂停,但不阻塞; 2、让状态转为就绪 3、让cpu重写调度,礼让不一定成功; Thread.currentThread()获取当前线程的引用 Or…

    Java 2023年6月8日
    071
  • Ubuntu 制作 系统的启动盘

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年6月8日
    081
  • 【2022暑期集训】最小生成树专题题解

    题目背景 Farmer John 被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场。当然,他需要你的帮助。 题目描述 FJ 已经给他的农场安排了一条…

    Java 2023年6月5日
    071
  • (转)微信扫码登录网页实现原理

    扫码登录操作过程 浏览器输入:https://wx.qq.com/?lang=zh_CN 手机登录微信,利用”扫一扫”功能扫描网页上的二维码 手机扫描成功后…

    Java 2023年6月15日
    093
  • 线程安全,这词你懂了吗?

    前言 还记得你第一次遇到「 线程安全」这个词的时候吗? 我第一次遇到线程安全这个词是在学习多线程并发操作的时候,看到人家文章里出现这个词,还有说各种线程安全的类,但是一开始并不理解…

    Java 2023年6月10日
    071
  • 在k8s中导出jvm内存错误dump文件到OSS

    加参数 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=logs/test.dump 可以实现在 jvm发生内存错误后 会生成du…

    Java 2023年6月16日
    080
  • 从0到1写一款自动为Markdown标题添加序号的Jetbrains插件

    1. markdown-index 最近做了一个Jetbrains的插件,叫 markdown-index,它的作用是为Markdown文档的标题自动添加序号,效果如下: 目前已经…

    Java 2023年6月7日
    0106
  • Redis笔记总结(狂神说)

    Redis最新超详细版教程通俗易懂 一、Nosql概述 为什么使用Nosql 1、单机Mysql时代 90年代,一个网站的访问量一般不会太大,单个数据库完全够用。随着用户增多,网站…

    Java 2023年6月9日
    079
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球