首页 > 其他分享 >七牛文件上传服务封装

七牛文件上传服务封装

时间:2023-03-03 09:00:21浏览次数:48  
标签:封装 String com qiniu 七牛 static import 上传 public

package com.sxsoft.admin.utils;

import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.qiniu.storage.BucketManager;
import com.qiniu.storage.Region;
import com.qiniu.storage.model.FileInfo;
import com.qiniu.util.StringUtils;
import com.sxsoft.admin.entity.SysAttachment;
import com.sxsoft.admin.entity.TTrade;
import com.sxsoft.admin.service.SysAttachmentService;
import com.sxsoft.admin.service.TTradeService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.UploadManager;
import com.qiniu.common.Zone;
import com.qiniu.storage.Configuration;
import com.qiniu.util.Auth;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.PostConstruct;
import java.io.File;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

@Component
public class QiniuUtils {

    private final static Logger log = LoggerFactory.getLogger(QiniuUtils.class);

    public static String QiniuAccessKey;

    public  static String QiniuSecretKey;

    public static String QiniuBucket;

    public static String QiniuDoMian;

    @Value("${sxsoft.Qiniu.QiniuAccessKey}")
    private  String _QiniuAccessKey;
    @Value("${sxsoft.Qiniu.QiniuSecretKey}")
    private   String _QiniuSecretKey;
    @Value("${sxsoft.Qiniu.QiniuBucket}")
    private  String _QiniuBucket;
    @Value("${sxsoft.Qiniu.QiniuDoMian}")
    private  String _QiniuDoMian;


    static Auth auth ;
    static Configuration cfg = new Configuration(Region.autoRegion());
    static  UploadManager uploadManager = new UploadManager(cfg);
    @PostConstruct
    private  void init()
    {
        QiniuAccessKey=_QiniuAccessKey;
        QiniuSecretKey=_QiniuSecretKey;
        QiniuBucket=_QiniuBucket;
        QiniuDoMian=_QiniuDoMian;
        auth= Auth.create(QiniuAccessKey, QiniuSecretKey);

    }

    //简单上传,使用默认策略,只需要设置上传的空间名就可以了
    public static String getUpToken() {
        return auth.uploadToken(QiniuBucket);
    }

    public static void upload(String savekey,String localFile) throws IOException {
        try {
            //调用put方法上传
            Response res = uploadManager.put(localFile, savekey, getUpToken());

            log.error("返回结果{}",res.bodyString());
        } catch (QiniuException e) {
            Response r = e.response;
            // 请求失败时打印的异常的信息
            System.out.println(r.toString());
            try {
                //响应的文本信息
                System.out.println(r.bodyString());
            } catch (QiniuException e1) {
                //ignore
            }
        }
    }


    /**
     * 文件下上传
     * @param savekey
     * @param localFile
     */
    public Map<String,Object> UploadSignFile(String localFile, String savekey) {
        Map<String,Object> map = new HashMap<>();
        try {
            //调用put方法上传
            Response res = uploadManager.put(localFile, savekey, getUpToken());
            log.error("上传七牛服务器返回结果{}",res.bodyString());
            String jsonStr = JSONObject.toJSONString(res);
            map = JSONObject.parseObject(jsonStr);
            if(map != null && !map.isEmpty()){
                BucketManager bucketManager = new BucketManager(auth, cfg);
                FileInfo fileInfo = bucketManager.stat(QiniuBucket, savekey);
                String md5 = fileInfo.md5;
                String mimeType = fileInfo.mimeType;
                map.put("md5",md5);
                map.put("mimeType",mimeType);
            }

        } catch (QiniuException e) {
            Response r = e.response;
            // 请求失败时打印的异常的信息
            System.out.println(r.toString());
            try {
                //响应的文本信息
                System.out.println(r.bodyString());
            } catch (QiniuException e1) {
                //ignore
            }
        }
        return map;
    }


    /**
     * 文件下载
     * @param key
     * @return
     */
    public String DownloadSignFile(String key) {
        //调用privateDownloadUrl方法生成下载链接,第二个参数可以设置Token的过期时间
        String downloadRUL = auth.privateDownloadUrl(QiniuDoMian+"/"+key, 3600);
        return downloadRUL;
    }



}

 

标签:封装,String,com,qiniu,七牛,static,import,上传,public
From: https://www.cnblogs.com/ht-privete-logs/p/17174339.html

相关文章

  • 解决码云Gitee上传文件大小受限的问题
     {https://blog.csdn.net/qq_20042935/article/details/119762405}第一种是清空仓库,这种操作很危险,直接就会把仓库完全清空了,如果不需要看提交记录这些之类的,可以选......
  • JSP上传文件夹的三种解决方案
    ​ 在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现。先说下要求:PC端全平台支持,要求支持Windows,Mac,Linux......
  • 如何上传你的组件到npm
    前言以react为例子webpack作为打包工具准备工作安装nodenpm上注册账号https://www.npmjs.com/创建要上传组件新建项目生成package.json文件npminit安装依赖np......
  • 上传相关必备知识点 `<input type="file">`
    上传相关知识点<inputtype="file">带有type="file"的<input>元素允许用户可以从他们的设备中选择一个或多个文件。选择后,这些文件可以使用提交表单的方式上传到服......
  • Web上传文件夹的三种解决方案
    ​ 最近遇见一个需要上传超大大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现。在某些业务中,大文件上传是一个比较重要的......
  • cowtransfer(奶牛快传)自动上传文件脚本—流程分析
    cowtransfer(奶牛快传)自动上传文件脚本—流程分析序言:距离上传发文也有几天了,这几天也是将这个脚本优化了一下。如果还不清楚这个脚本的效果是怎么样的小伙伴可以......
  • Java上传二进制(multipart/form-data)_Demo
    这里做个记录,通过此次问题的解决,弄清POST同时传文件及参数时,底层到底是怎么组成,文件流及参数是怎么分隔组成,及分隔符如何写入流。好,废话不多说,直接上代码,此代码配置好自己......
  • SpringCloud文件夹上传解决方案
    ​ 前言:因自己负责的项目(jetty内嵌启动的SpringMvc)中需要实现文件上传,而自己对java文件上传这一块未接触过,且对Http协议较模糊,故这次采用渐进的方式来学习文件上传的......
  • 将项目封装进docker进行迁移和使用
    首先要理解docker的基本使用,本文不做过多阐述,博主也对docker没有了解透彻。这里列一下docker的基本命令:dockerinfo#查看docker信息docker-v......
  • 局域网文件夹上传解决方案
    ​ 文件夹数据库处理逻辑public class DbFolder{    JSONObjectroot;       public DbFolder()    {        this.root= new JSON......