Spring MVC 上传图片至七牛云图床

    之前分享过图片上传到项目中和本地中,但是有时项目中会用到大量的图片和小视频,为了分担服务器压力,可以将将文件都放在七牛云,本文主要介绍如何将图片上传到七牛云图床上面。上传到七牛云与之前上传到项目中/本地主要是控制层代码不同,前端部分,请参考前文:Spring MVC 图片上传及预览,本文详情见:http://www.dustyblog.cn/116.html

  一、首先引入七牛的jar包

  1. <!-- 七牛云 -->
  2. <dependency>
  3.   <groupId>com.qiniu</groupId>
  4.   <artifactId>qiniu-java-sdk</artifactId>
  5.   <version>7.1.1</version>
  6. </dependency>

二、我这里封装了一个七牛上传的工具类:QiNiuUtil.java,可以在需要使用的时候调用该工具类,返回的是上传的图片的访问地址

该工具类的具体配置:秘钥、上传空间、域名等需要根据自己的情况更改。如果对七牛云的使用还不是很熟练,建议参考:七牛云:创建自己的图床

  1. public class QiNiuUtil {
  2.  
  3.     //设置账号的AK和SK密钥
  4.     private static final String ACCESS_KEY = "***********************************";
  5.     private static final String SECRET_KEY = "***********************************";
  6.     // 上传空间域名
  7.     private static final String bucketNameUrl = "http://upload.dustyblog.cn";
  8.     //要上传的空间
  9.     private static final String bucketName = "upload-blog";
  10.     //密钥
  11.     private static final Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
  12.  
  13.     /**
  14.      * 上传图片至七牛云,返回图片地址
  15.      * @param filePath :文件本地的绝对路径
  16.      * @param fileName :文件名称
  17.      * @return
  18.      * @throws IOException
  19.      */
  20.     public String upload(String filePath, String fileName) throws IOException{
  21.         //创建上传对象
  22.         UploadManager uploadManager = new UploadManager();
  23.         try {
  24.             //调用put方法上传
  25.             Response res = uploadManager.put(filePath, fileName, auth.uploadToken(bucketName));
  26.         } catch (QiniuException e) {
  27.             Response r = e.response;
  28.             try {
  29.                 //响应的文本信息
  30.                 System.out.println(r.bodyString());
  31.             } catch (QiniuException e1) {
  32.                 //ignore
  33.             }
  34.         }
  35.         // 图片访问地址
  36.         String url = bucketNameUrl + "/" + fileName;
  37.         return url;
  38.     }
  39. }

 三、案例演示:

这里只放出的是control 代码,前端HTML 和ajax请求代码可直接使用:Spring MVC 图片上传及预览

  1. @RequestMapping(value = "/uploadQiuNiu", method = RequestMethod.POST)
  2. @ResponseBody
  3. public String uploadQiNiu(@RequestParam("file") MultipartFile file) throws Exception{
  4.     //如果文件不为空,写入上传路径
  5.     if(!file.isEmpty()) {
  6.         //文件的完整名称,如image.jpg
  7.         String filename = file.getOriginalFilename();
  8.         //文件名,如image
  9.         String name = filename.substring(0,filename.indexOf("."));
  10.         //文件后缀,如.jpg
  11.         String suffix = filename.substring(filename.lastIndexOf("."));
  12.         //文件路径:
  13.         String path = "E:\\upload";
  14.         File filepath = new File(path,filename);
  15.         //若文件存在重命名,更改文件名如:image(1).jpg 后上传
  16.         String newFilename = filename;
  17.         while(filepath.exists()) {
  18.             newFilename = name+"("+index+")"+suffix;
  19.             String parentPath = filepath.getParent();
  20.             filepath = new File(parentPath+File.separator+newFilename);
  21.             filename = newFilename;
  22.             index++;
  23.         }
  24.         //判断路径是否存在,如果不存在就创建一个
  25.         if (!filepath.getParentFile().exists()) {
  26.             filepath.getParentFile().mkdirs();
  27.         }
  28.         //将上传文件保存到一个目标文件当中
  29.         file.transferTo(new File(path + File.separator + filename));
  30.  
  31.         /**
  32.          * 七牛上传
  33.          */
  34.         String URL = "";
  35.         QiNiuUtil qiniuUtil = new QiNiuUtil();
  36.         try {
  37.             path = path + "\\"+filename;
  38.             //上传到七牛云
  39.             URL = qiniuUtil.upload(path, filename);
  40.         } catch (IOException e) {
  41.             // TODO Auto-generated catch block
  42.             URL = "上传到七牛云失败!";
  43.             e.printStackTrace();
  44.         }
  45.         // 返回图片链接地址给前端
  46.         return URL;
  47.     }
  48.     return "EMPTY";
  49. }

上传之后可以发现,返回的已经是七牛云图床的链接地址,在进入七牛云相应的空间,可以看见我上传的图片已经在里面了,说明成功了!例如我这里返回的:http://upload.dustyblog.cn/test.jpg

猜你喜欢

转载自blog.csdn.net/qq_41690817/article/details/80394111