springboot实现存储文件(图片)到七牛云

时间:2019-01-07作者:klpeng分类:IT综合浏览:1387评论:0

maven添加包:

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

 

1、创建QiniuConstant.java

package com.zhonghao.pinfang.core.util.qiniu;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "qiniu")
public interface QiniuConstant {

    String BUCKET = "你的存储空间名称";
    
    String PATH = "你绑定的域名(或默认的测试域名)";
    
    String ACCESSKEY = "你的accesskey";

    String SECRETKEY = "你的secretkey";
}
 

2、创建QiniuUtil.java

package com.zhonghao.pinfang.core.util.qiniu;

import java.io.FileInputStream;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import com.alibaba.fastjson.JSON;
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.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;

@Component
public class QiniuUtil {

    private static final Logger logger = LoggerFactory.getLogger(QiniuUtil.class);
    
    /** 将图片上传到七牛云
     * @Title: uploadImg
     * @author tianshuhao
     * @param @param file
     * @param @param key 保存在空间中的名字,如果为空会使用文件的hash值为文件名
     * @param @return    参数
     * @return String    返回类型
     * @throws
     */
    public  static String uploadImg(FileInputStream file, String key) {
        //构造一个带指定Zone对象的配置类
        Configuration cfg = new Configuration(Zone.zone1());
        //...其他参数参考类注释
        UploadManager uploadManager = new UploadManager(cfg);
        //...生成上传凭证,然后准备上传
        String bucket = QiniuConstant.BUCKET;
        String path = QiniuConstant.PATH;
        String accessKey = QiniuConstant.ACCESSKEY;
        String secretKey = QiniuConstant.SECRETKEY;
        
        //默认不指定key的情况下,以文件内容的hash值作为文件名
        Auth auth = Auth.create(accessKey, secretKey);
        String upToken = auth.uploadToken(bucket);
        
        try {
            Response response = uploadManager.put(file, key, upToken, null, null);
            //解析上传成功的结果
            DefaultPutRet putRet = JSON.parseObject(response.bodyString(), DefaultPutRet.class);
//                DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
//                System.out.println(putRet.key);
//                System.out.println(putRet.hash);
            String return_path = path + "/" + putRet.key;
            logger.info("保存地址={}",return_path);
            return return_path;
        } catch (QiniuException ex) {
            Response r = ex.response;
            System.err.println(r.toString());
            try {
                System.err.println(r.bodyString());
            } catch (QiniuException ex2) {
                //ignore
            }
        }
        return "";
    }
}

3、文件上传controller

package com.zhonghao.pinfang.modular.system.controller;

import java.io.FileInputStream;
import java.util.UUID;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import com.zhonghao.pinfang.core.util.qiniu.QiniuUtil;

import cn.stylefeng.roses.core.base.controller.BaseController;

/**
 * 文件管理控制器
 * @ClassName: FileController
 * @author tianshuhao
 * @date 2019年1月2日 下午4:15:40
 *
 */
@Controller
@RequestMapping("/file")
public class FileController extends BaseController {

    /**
     * 上传文件到七牛云
     * @throws Exception 
     */
    @RequestMapping(method = RequestMethod.POST, path = "/upload")
    @ResponseBody
    public String upload(@RequestPart("file") MultipartFile picture) throws Exception {
        FileInputStream inputStream = (FileInputStream) picture.getInputStream();
        String path = QiniuUtil.uploadImg(inputStream, UUID.randomUUID().toString().substring(0, 8)); 
        return path;
    }
}
 

打赏
文章版权声明:除非注明,否则均为彭超的博客原创文章,转载或复制请以超链接形式并注明出处。
相关推荐

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

猜你喜欢