springboot+七牛云实现文件上传并返回url

1.引入七牛云依赖

        
            com.qiniu
            qiniu-java-sdk
            7.11.0
        

2.获取七牛云密钥

springboot+七牛云实现文件上传并返回url_第1张图片

获取AK和SK

在application文件中配置七牛云密钥

springboot+七牛云实现文件上传并返回url_第2张图片

填自己的AK和SK        配置自己的空间名称       以及自己的访问域名   

如果设置了cdn加速域名url则为自己设置的域名   如果没设置则是七牛云提供的测试域名

3.配置七牛云图片上传类

package com.txd.schoolhelp.util;

import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.Region;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.*;


@Component
public class QiNiuUtils {

    @Value("${QiNiu.AccessKey}")
    private String AccessKey;

    @Value("${QiNiu.SecretKey}")
    private String SecretKey;

    @Value("${QiNiu.BucketName}")
    private String BucketName;

    @Value("${QiNiu.url}")
    private String url;

    /**
     * 上传图片到七牛云
     * @param multipartFile
     * @return
     */
    public String uploadImageQiniu(MultipartFile multipartFile){
        try {
            //1、获取文件上传的流
            byte[] fileBytes = multipartFile.getBytes();
            //2、创建日期目录分隔
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
            String datePath = dateFormat.format(new Date());

            //3、获取文件名
            String originalFilename = multipartFile.getOriginalFilename();
            String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
            String filename = datePath+"/"+UUID.randomUUID().toString().replace("-", "")+ suffix;

            //4.构造一个带指定 Region 对象的配置类
            //Region根据自己的对象空间的地址选
            Configuration cfg = new Configuration(Region.region2());
            UploadManager uploadManager = new UploadManager(cfg);

            //5.获取七牛云提供的 token
            Auth auth = Auth.create(AccessKey, SecretKey);
            String upToken = auth.uploadToken(BucketName);
            uploadManager.put(fileBytes, filename, upToken);

            return url+"/"+filename;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}

4.实现上传

    @Autowired
    private QiNiuUtils qiNiuUtils;


    @PostMapping("/fileUpload")
    @ApiOperation(value = "上传下载图片")
    public String filesUpload(@RequestParam("fileName") MultipartFile file){
        String filename = file.getOriginalFilename();
        //判断文件格式是否为图片
        if (filename.endsWith(".jpg") || filename.endsWith(".png") || filename.endsWith(".jepg")){
            String fileUrl = qiNiuUtils.uploadImageQiniu(file);
            return fileUrl;
        }
        throw new TxdException(500,"文件格式错误");
    }

springboot+七牛云实现文件上传并返回url_第3张图片

springboot+七牛云实现文件上传并返回url_第4张图片

上传后返回文件链接

5.问题(返回的url打开404)

查看是否将自己的存储空间设置为公开

springboot+七牛云实现文件上传并返回url_第5张图片

如果为私有  外链信息为

springboot+七牛云实现文件上传并返回url_第6张图片

你可能感兴趣的:(spring,boot,java,后端)