后端请求
/**
* 七牛云上传请求(单个)
*/
@PostMapping("/uploadQiNiu")
public AjaxResult uploadQiNiuFile(MultipartFile file) throws Exception
{
try
{
String fileName = String.valueOf(FileUploadQiNiuUtils.QiniuCloudUploadImage(file));
String url = QiniuCloud_domainName + fileName;
System.out.println(url);
System.out.println(FileUploadQiNiuUtils.QiniuCloudUploadImage(file));
AjaxResult ajax = AjaxResult.success();
ajax.put("url", url);
ajax.put("fileName", url);
// ajax.put("newFileName", FileUtils.getName(fileName));
// ajax.put("originalFilename", file.getOriginalFilename());
return ajax;
}
catch (Exception e)
{
return AjaxResult.error(e.getMessage());
}
}
后端七牛云上传工具类
package com.ruoyi.common.utils.file;
import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.Region;
import com.qiniu.storage.UploadManager;
import com.qiniu.util.Auth;
import org.springframework.util.DigestUtils;
import org.springframework.web.multipart.MultipartFile;
import java.io.ByteArrayInputStream;
import java.io.UnsupportedEncodingException;
public class FileUploadQiNiuUtils {
private static final String QiniuCloud_accessKey = "自己的ak";
private static final String QiniuCloud_secretKey = "自己的sk";
private static final String QiniuCloud_bucket = "七牛云自己创建的文件目录";
public static final String QiniuCloud_domainName = "自己的域名";
private static final String customSuffix = ".png";//定义图片保存后的后缀
private static final String customSuffix1 = ".mp4";//定义图片保存后的后缀
/**
* 上传图片到七牛云
* @param file 图片
* @return 返回图片存储后的新图片名
* @throws Exception
*/
public static String QiniuCloudUploadImage(MultipartFile file) throws Exception{
if(file.isEmpty()) {
return "文件为空";
}else if(file.getSize() > 1024*1024*500){
return "文件大于50M";
}
//获取图片后缀
String originalFilename = file.getOriginalFilename();
System.out.println("-------------一眼顶针");
System.out.println(originalFilename);
String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
System.out.println("-------------一眼顶针2");
System.out.println(suffix);
//允许上传的图片格式集合
String[] suffixes = new String[]{".bmp", ".jpeg", ".jpg", ".png",".mp4"};
boolean bool = false;
//判断格式是否在suffixes中
for(String string : suffixes){
if (string.equals(suffix)){
bool = true;
break;
}
}
if(!bool){
return "格式错误";
}
//构造一个带指定 Region 对象的配置类
Configuration cfg = new Configuration(Region.autoRegion());
cfg.resumableUploadAPIVersion = Configuration.ResumableUploadAPIVersion.V2;//指定分片上传版本
UploadManager uploadManager = new UploadManager(cfg);
//生成上传凭证,然后准备上传
String accessKey = QiniuCloud_accessKey;
String secretKey = QiniuCloud_secretKey;
String bucket = QiniuCloud_bucket;
byte[] bytes = file.getBytes();
String imageName = DigestUtils.md5DigestAsHex(bytes);//将图片md5的值作为图片名,避免重复图片浪费空间
String key = new String();
if (suffix.equals(".mp4")){
//默认不指定key的情况下,以文件内容的hash值作为文件名
key = imageName + customSuffix1;//图片保存到七牛云后的文件名
} else {
key = imageName + customSuffix;//图片保存到七牛云后的文件名
}
try {
byte[] uploadBytes = file.getBytes();
ByteArrayInputStream byteInputStream=new ByteArrayInputStream(uploadBytes);
Auth auth = Auth.create(accessKey, secretKey);
String upToken = auth.uploadToken(bucket);
try {
uploadManager.put(byteInputStream,key,upToken,null, null);
} catch (QiniuException ex) {
Response r = ex.response;
System.err.println("七牛云ERROR:" + r.toString());
try {
System.err.println("七牛云ERROR:" + r.bodyString());
} catch (QiniuException ex2) {
//ignore
}
}
} catch (UnsupportedEncodingException ex) {
//ignore
}
return key;
}
/**
* 获取七牛云图片链接
* @param fileName 图片名
* @return 返回图片链接
*/
public static String QiniuCloudDownloadImage(String fileName){
String fileUrl = String.format("%s/%s", QiniuCloud_domainName, fileName);
return fileUrl;
}
}
前端页面
这个页面是若依封装的上传组件
return {
number: 0,
uploadList: [],
dialogImageUrl: "",
dialogVisible: false,
hideUpload: false,
// baseUrl: process.env.VUE_APP_BASE_API,
uploadImgUrl: "/common/uploadQiNiu", // 上传的图片服务器地址
// uploadImgUrl: process.env.VUE_APP_BASE_API + "/common/uploadQiNiu", // 上传的图片服务器地址
headers: {
Authorization: "Bearer " + getToken(),
},
fileList: []
};
},