Java 上传图片到七牛云(实用版)

1、加载pom依赖包(根据需求引入版本依赖)

代码编写文位置名称:pom.xml

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

2、封装上传到七牛云的方法(需要新建方法类)

方法名称:QiniuCloudUtil.java

package com.example.supermarket.project.config;
import com.alibaba.druid.util.StringUtils;
import com.qiniu.common.QiniuException;
import com.qiniu.common.Zone;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.UploadManager;
import com.qiniu.util.Auth;

import java.io.File;
import java.io.IOException;

/**
 * @author dsn
 * @createTime 07 21:07
 * @description 七牛云工具
 */
public class QiniuCloudUtil {
    //设置需要操作的账号的AK和SK
    private static final String ACCESS_KEY = "*******";
    private static final String SECRET_KEY = "*******";

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

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

    //上传方法 file文件 key上传到七牛云的名称
    public static String upload(File file,String key) throws IOException {

        // 创建上传对象,Zone*代表地区  zoneAs0东南亚
        Configuration configuration = new Configuration(Zone.zoneAs0());
        UploadManager uploadManager = new UploadManager(configuration);

        try {
            // 调用put方法上传
            String token = auth.uploadToken(bucketname);
            if(StringUtils.isEmpty(token)) {
                System.out.println("未获取到token,请重试!");
                return null;
            }
            Response res = uploadManager.put(file,key,token);
            // 打印返回的信息
            if (res.isOK()){
                return key;
            }
        }catch (QiniuException e) {
            Response r = e.response;
            // 请求失败时打印的异常的信息
            e.printStackTrace();
            System.out.println("error "+r.toString());
            try {
                // 响应的文本信息
                System.out.println(r.bodyString());
            } catch (QiniuException e1) {
                System.out.println("error "+e1.error());
            }
        }

        return null;
    }
}

3、提供前端调用​接口

代码位置名称:自己定义类,将下面的方法放入进行上传。

    /**
     * 上传图片到七牛云
     * @param file
     * @return
     */
    @PostMapping(value = "upload")
    @ResponseBody
    public String upload(MultipartFile file)  {
        String fileName=null;
        JSONObject rejsonObj = new JSONObject();
        try {
            //获取路径后缀
            String fileUrl = file.getOriginalFilename();
            String[] strs = fileUrl.split("\\.");
            String regex = "."+strs[strs.length-1];

            //拼接文件名称 我的时使用uuid命名的
            String imageName = UUID.randomUUID().toString()+regex;
            System.out.println("File name = "+imageName);

            //转存传输的文件到指定路径
            File files = File.createTempFile("tmp", imageName);
            file.transferTo(files);

            //将转存的文件存入七牛云
            fileName = QiniuCloudUtil.upload(files,imageName);
            System.out.println("fileName =="+fileName);
            if (fileName != null){
                fileName="**********"+fileName;//***** 设置七牛云的访问域名
                rejsonObj.put("code",200);
                rejsonObj.put("url",fileName);
            }

            //在JVM进程退出的时候删除文件,临时文件的删除
            files.deleteOnExit();
        } catch (IOException e) {
            rejsonObj.put("code",500);
            rejsonObj.put("msg","上传失败");
            e.printStackTrace();
        }
        return rejsonObj.toJSONString();
    }

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值