我的上传文件引用第三方插件七牛云以下有详情的步骤:
1.注册,登录,去七牛云官网注册
2.新建存储空间:
3.QiniuServiceImpl方法上传:
package com.cn.wxj.service.impl;
import java.io.IOException;
import java.util.UUID;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import com.alibaba.fastjson.JSONObject;
import com.cn.wxj.utils.FileUtil;
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;
@Service
public class QiniuServiceImpl {
private static final Logger logger = LoggerFactory.getLogger(QiniuServiceImpl.class);
// 设置好账号的ACCESS_KEY和SECRET_KEY
String ACCESS_KEY = "-1XQb5WXYmQ7p_CTjoaim853ai7H5QeAB0gFl5B7";
String SECRET_KEY = "cRZJpRIo0dBm_o_UDocCjenQLGRdsjHN1s7_tPBB";
// 要上传的空间
String bucketname = "jie";
// 密钥配置
Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
// 构造一个带指定Zone对象的配置类,不同的七云牛存储区域调用不同的zone
Configuration cfg = new Configuration(Zone.zone0());
// ...其他参数参考类注释
UploadManager uploadManager = new UploadManager(cfg);
// 测试域名,只有30天有效期
private static String QINIU_IMAGE_DOMAIN = "http://pqnpifcvp.bkt.clouddn.com/";
// 简单上传,使用默认策略,只需要设置上传的空间名就可以了
public String getUpToken() {
return auth.uploadToken(bucketname);
}
public String saveImage(MultipartFile file) throws IOException {
try {
int dotPos = file.getOriginalFilename().lastIndexOf(".");
if (dotPos < 0) {
return null;
}
String fileExt = file.getOriginalFilename().substring(dotPos + 1).toLowerCase();
// 判断是否是合法的文件后缀
if (!FileUtil.isFileAllowed(fileExt)) {
return null;
}
String fileName = UUID.randomUUID().toString().replaceAll("-", "") + "." + fileExt;
// 调用put方法上传
Response res = uploadManager.put(file.getBytes(), fileName, getUpToken());
// 打印返回的信息
if (res.isOK() && res.isJson()) {
// 返回这张存储照片的地址
return QINIU_IMAGE_DOMAIN + JSONObject.parseObject(res.bodyString()).get("key");
} else {
logger.error("七牛异常:" + res.bodyString());
return null;
}
} catch (QiniuException e) {
// 请求失败时打印的异常的信息
logger.error("七牛异常:" + e.getMessage());
return null;
}
}
}
4:工具类:FileUtil类
package com.cn.wxj.utils;
public class FileUtil {
// 图片允许的后缀扩展名
public static String[] IMAGE_FILE_EXTD = new String[] { "png", "bmp", "jpg", "jpeg","pdf" };
public static boolean isFileAllowed(String fileName) {
for (String ext : IMAGE_FILE_EXTD) {
if (ext.equals(fileName)) {
return true;
}
}
return false;
}
}
5.controller类
package com.cn.wxj.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import com.cn.wxj.entity.Img;
import com.cn.wxj.service.ImgService;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.List;
@Controller
@RequestMapping("xx")
public class TuController {
@Autowired
private QiniuServiceImpl qiniuService;
@Autowired
private ImgService mm;
@RequestMapping(value = "/testUpload", method = RequestMethod.POST)
public String uploadImage(@RequestParam("file") MultipartFile file, HttpServletRequest request,Img i,Model mv) {
if(file.isEmpty()) {
return "error";
}
try {
String fileUrl=qiniuService.saveImage(file);
i.setImg(fileUrl);
int a=mm.add(i);
if(a>0) {
List<Img> li=mm.find(null);
mv.addAttribute("li",li);
return "img";
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
6.Springmvc配置:图片大小
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="1048576" />
</bean>
7.pom引用家包:
<!--七牛云-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.4</version>
</dependency>
<!-- uploadify文件上传组件 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>