微信使用七牛云sdk上传图片至七牛云存储

事前准备

后端配置

导入七牛云依赖

  <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
            <version>3.14.2</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.5</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.qiniu</groupId>
            <artifactId>happy-dns-java</artifactId>
            <version>0.1.6</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.qiniu</groupId>
            <artifactId>qiniu-java-sdk</artifactId>
            <version>[7.5.0, 7.5.99]</version>
        </dependency>

配置获取token接口

package cn.zzzyuan.controller;

import com.qiniu.util.Auth;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

@Controller
@RequestMapping(value = "/qiniu")
public class QiniuController {
    
    
    // 获取token
    @RequestMapping(value = "/getToken")
    public @ResponseBody
    Map<String, String> getToken() throws IOException {
    
    
        String accessKey = "*******";
        String secretKey = "***";
        String bucket = 空间名";
        Auth auth = Auth.create(accessKey, secretKey);
        String upToken = auth.uploadToken(bucket);
        Map<String, String> map = new HashMap<String, String>();
        map.put("uptoken", upToken);
        return map;
    }

}

文件配置

  • 在qiniuUploader.js内
 var config = {
    
    
        // bucket 所在区域。ECN, SCN, NCN, NA, ASG,分别对应七牛云的:华东,华南,华北,北美,新加坡 5 个区域
        qiniuRegion: 'SCN',
        // 七牛云bucket 外链前缀,外链在下载资源时用到
        qiniuBucketURLPrefix: 'http://你七牛云空间绑定的域名',

        // 获取uptoken方法三选一即可,执行优先级为:uptoken > uptokenURL > uptokenFunc。三选一,剩下两个置空。推荐使用uptokenURL,详情请见 README.md
        // 由其他程序生成七牛云uptoken,然后直接写入uptoken
        qiniuUploadToken: '',
        // 从指定 url 通过 HTTP GET 获取 uptoken,返回的格式必须是 json 且包含 uptoken 字段,例如: {"uptoken": "0MLvWPnyy..."}
        qiniuUploadTokenURL: 'http://localhost:8081/api/qiniu/getToken 你七牛云后端获取token的接口url',
        // uptokenFunc 这个属性的值可以是一个用来生成uptoken的函数,详情请见 README.md
        qiniuUploadTokenFunction: function () {
    
     },

        // qiniuShouldUseQiniuFileName 如果是 true,则文件的 key 由 qiniu 服务器分配(全局去重)。如果是 false,则文件的 key 使用微信自动生成的 filename。出于初代sdk用户升级后兼容问题的考虑,默认是 false。
        // 微信自动生成的 filename较长,导致fileURL较长。推荐使用{qiniuShouldUseQiniuFileName: true} + "通过fileURL下载文件时,自定义下载名" 的组合方式。
        // 自定义上传key 需要两个条件:1. 此处shouldUseQiniuFileName值为false。 2. 通过修改qiniuUploader.upload方法传入的options参数,可以进行自定义key。(请不要直接在sdk中修改options参数,修改方法请见demo的index.js)
        // 通过fileURL下载文件时,自定义下载名,请参考:七牛云“对象存储 > 产品手册 > 下载资源 > 下载设置 > 自定义资源下载名”(https://developer.qiniu.com/kodo/manual/1659/download-setting)。本sdk在README.md的"常见问题"板块中,有"通过fileURL下载文件时,自定义下载名"使用样例。
        qiniuShouldUseQiniuFileName: false
    }

使用

const qiniuUploader = require("../../common/util/qiniuUploader.js");
// 初始化七牛云相关配置
function initQiniu() {
    
    
  var options = {
    
    
      // bucket所在区域,这里是华北区。ECN, SCN, NCN, NA, ASG,分别对应七牛云的:华东,华南,华北,北美,新加坡 5 个区域
      region: 'SCN',

      // 获取uptoken方法三选一即可,执行优先级为:uptoken > uptokenURL > uptokenFunc。三选一,剩下两个置空。推荐使用uptokenURL,详情请见 README.md
      // 由其他程序生成七牛云uptoken,然后直接写入uptoken
      uptoken: '',
      // 从指定 url 通过 HTTP GET 获取 uptoken,返回的格式必须是 json 且包含 uptoken 字段,例如: {"uptoken": "0MLvWPnyy..."}
      uptokenURL: 'http://192.168.31.181:8081/api/qiniu/getToken',
      // uptokenFunc 这个属性的值可以是一个用来生成uptoken的函数,详情请见 README.md
      uptokenFunc: function () {
    
     
          // do something
          return qiniuUploadToken;
      },

      // bucket 外链域名,下载资源时用到。如果设置,会在 success callback 的 res 参数加上可以直接使用的 fileURL 字段。否则需要自己拼接
      domain: 'http://**',
      // qiniuShouldUseQiniuFileName 如果是 true,则文件的 key 由 qiniu 服务器分配(全局去重)。如果是 false,则文件的 key 使用微信自动生成的 filename。出于初代sdk用户升级后兼容问题的考虑,默认是 false。
      // 微信自动生成的 filename较长,导致fileURL较长。推荐使用{
    
    qiniuShouldUseQiniuFileName: true} + "通过fileURL下载文件时,自定义下载名" 的组合方式。
      // 自定义上传key 需要两个条件:1. 此处shouldUseQiniuFileName值为false2. 通过修改qiniuUploader.upload方法传入的options参数,可以进行自定义key。(请不要直接在sdk中修改options参数,修改方法请见demo的index.js)
      // 通过fileURL下载文件时,文件自定义下载名,请参考:七牛云“对象存储 > 产品手册 > 下载资源 > 下载设置 > 自定义资源下载名”(https://developer.qiniu.com/kodo/manual/1659/download-setting)。本sdk在README.md的"常见问题"板块中,有"通过fileURL下载文件时,自定义下载名"使用样例。
      shouldUseQiniuFileName: false
  };
  // 将七牛云相关配置初始化进本sdk
  qiniuUploader.init(options);
}

export function uploadImg(path){
    
    
  // 向七牛云上传
  qiniuUploader.upload(path, (res) => {
    
    
           
  }, (error) => {
    
    
      console.error('error: ' + JSON.stringify(error));
  },
  null,
  (progress) => {
    
    
      console.log('上传进度', progress.progress);
  }, cancelTask => {
    
    }
  );
}

猜你喜欢

转载自blog.csdn.net/weixin_45877759/article/details/116650600