1. pom.xml引入七牛云的sdk
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>[7.2.0,7.2.99]</version>
</dependency>
2. 写一个图片上传的类QiniuUploadFileUtil
package com.chenxq.blog.personalBlog.Util; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Map; import org.springframework.beans.factory.annotation.Value; import org.springframework.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; public class QiniuUploadFileUtil { // 这个是上传文件时在本地的临时文件夹 @Value("${baseUploadUrl}") private String baseUploadUrl; // 设置需要操作的账号的AK和SK,可以在七牛云的个人中心查询到 private static String accessKey="======="; private static String secretKey="===="; // 要上传的空间名 private static String bucketname="===="; // 密钥 private static Auth auth = Auth.create(accessKey, secretKey); //上传 file是上传的文件地址,key是上传的图片名称 public static String upload(File file, String key) throws IOException{ // 创建上传对象,Zone*代表地区 System.out.print(bucketname); Configuration configuration = new Configuration(Zone.zone2()); 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()){ System.out.print(res.bodyString()); //这里的key返回的就是存储在七牛云上的地址 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. 在controller里调用
@ApiOperation("图片上传至七牛云")
@ApiImplicitParam(name = "file", value = "文件", required = true, dataType = "File")
@RequestMapping(value="/uploadqiniu",method= {RequestMethod.POST,RequestMethod.GET})
@ResponseBody
public Result uploadqiniu(@RequestParam("file")MultipartFile file,HttpServletRequest request) {
//获得文件名字
String fileName=file.getOriginalFilename();
fileName= FileNameUtil.getFileName(fileName);
File dest = new File(baseUploadUrl + fileName);
try {
//将MultipartFile类转换成File类
file.transferTo(dest);
String key=QiniuUploadFileUtil.upload(dest, fileName);
return ResultUtil.success(key);
}catch(Exception e) {
e.printStackTrace();
}
// 返回
return ResultUtil.error(202,"未知错误导致上传失败");
}
4. 使用:http://七牛云域名//返回的key值,就可以访问图片了。