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值,就可以访问图片了。