七牛云上传图片后台

    <dependency>
        <groupId>com.qiniu</groupId>
        <artifactId>qiniu-java-sdk</artifactId>
        <version>[7.2.0, 7.2.99]</version>
    </dependency>

Controlle写

@ResponseBody
@PostMapping(value="/uploadImg")
@Transactional
public ResultInfo uploadImg(@RequestParam MultipartFile file, HttpServletRequest request) {
ResultInfo result = new ResultInfo();

    if (file.isEmpty()) {
        result.setStatus(400);
        result.setMsg("文件为空,请重新上传");
        return result;
    }

    try {
        byte[] bytes = file.getBytes();
        String imageName = UUID.randomUUID().toString();
        try {
            //使用base64方式上传到七牛云
            String url = QiniuCloudUtil.put64image(bytes, imageName);
            result.setStatus(200);
            result.setMsg("文件上传成功");
            result.setInfo(url);
            System.out.print(result);
        } catch (Exception e) {
            e.printStackTrace();
        }
    } catch (IOException e) {
        result.setStatus(500);
        result.setMsg("文件上传发生异常!");
    } finally {
        return result;
    }
}

工具类

public class QiniuCloudUtil {

// 设置需要操作的账号的AK和SK
private static final String ACCESS_KEY = "";
private static final String SECRET_KEY = "fXtzlq--y";

// 要上传的空间
private static final String bucketname = "shop";

// 密钥
private static final Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);

private static final String DOMAIN = "http://pvqna7kyr.bkt.clouddn.com/";//外联域名

private static final String style = "自定义的图片样式";

public static String getUpToken() {
    return auth.uploadToken(bucketname, null, 3600, new StringMap().put("insertOnly", 1));
}

// 普通上传
public static String upload(String filePath, String fileName) throws Exception {
    // 创建上传对象
    Configuration cfg = new Configuration(Zone.zone2());
    UploadManager uploadManager = new UploadManager(cfg);
    try {
        // 调用put方法上传
        String token = auth.uploadToken(bucketname);
        if(StringUtils.isEmpty(token)) {
            System.out.println("未获取到token,请重试!");
            return null;
        }
        Response res = uploadManager.put(filePath, fileName, token);
        // 打印返回的信息
        System.out.println(res.bodyString());
        if (res.isOK()) {
            Ret ret = res.jsonToObject(Ret.class);
            //如果不需要对图片进行样式处理,则使用以下方式即可
            //return DOMAIN + ret.key;
            return DOMAIN + ret.key + "?";
        }
    } catch (QiniuException e) {
        Response r = e.response;
        // 请求失败时打印的异常的信息
        System.out.println(r.toString());
        try {
            // 响应的文本信息
            System.out.println(r.bodyString());
        } catch (QiniuException e1) {
            // ignore
        }
    }
    return null;
}

//base64方式上传
public static String put64image(byte[] base64, String key) throws Exception{
    String file64 = Base64.encodeToString(base64, 0);
    Integer len = base64.length;

    //华北空间使用 upload-z1.qiniu.com,华南空间使用 upload-z2.qiniu.com,北美空间使用 upload-na0.qiniu.com
    String url = "http://upload-z2.qiniu.com/putb64/" + len + "/key/"+ UrlSafeBase64.encodeToString(key);

    RequestBody rb = RequestBody.create(null, file64);
    Request request = new Request.Builder()
            .url(url)
            .addHeader("Content-Type", "application/octet-stream")
            .addHeader("Authorization", "UpToken " + getUpToken())
            .post(rb).build();
    OkHttpClient client = new OkHttpClient();
    okhttp3.Response response = client.newCall(request).execute();
    System.out.println(response);
    //如果不需要添加图片样式,使用以下方式
    return DOMAIN + key;
}

class Ret {
    public long fsize;
    public String key;
    public String hash;
    public int width;
    public int height;
}

}

public class ResultInfo {
//返回信息代码(1 成功 0 失败)
private Integer status;
//返回接口调用消息提示,成功返回success,失败返回对应的失败信息
private String msg;
private String info;
//返回的执行结果集
private Object result;

public static ResultInfo success() {
    ResultInfo resultInfo = new ResultInfo();
    resultInfo.setStatus(1);
    resultInfo.setMsg("操作成功");
    return resultInfo;
}

public static ResultInfo failure(String msg) {
    ResultInfo resultInfo = new ResultInfo();
    resultInfo.setStatus(0);
    resultInfo.setMsg(msg);
    return resultInfo;
}

public static ResultInfo failure() {
    ResultInfo resultInfo = new ResultInfo();
    resultInfo.setStatus(0);
    resultInfo.setMsg("操作失败");
    return resultInfo;
}

public ResultInfo build(Object result) {
    if (null != result) {
        this.result = result;
    } else {
        this.result = null;
    }
    return this;
}

public String getMsg() {
    return msg;
}

public void setMsg(String msg) {
    this.msg = msg;
}

public String getInfo() {
    return info;
}

public void setInfo(String info) {
    this.info = info;
}

public Integer getStatus() {

    return status;
}

public void setStatus(Integer status) {
    this.status = status;
}

public Object getResult() {
    return result;
}

public void setResult(Object result) {
    this.result = result;
}

@Override
public String toString() {
    return "ResultInfo{" +
            "status=" + status +
            ",Info=" + info +
            ", msg='" + msg + '\'' +
            ", result=" + result +
            '}';
}

}

如果需要配置图片大小限制
application.yml 加入
servlet:
multipart:
maxFileSize: “1000MB”
maxRequestSize: “10000MB”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值