您的位置:首页 > 编程语言 > Java开发

summernote图片上传至七牛云 (springmvc)

2016-11-24 00:00 267 查看
由于项目中需要图片上传至七牛云,以前是把七牛的ACCESS_KEY和SECRET_KEY 都放在js中 暴露在外部,这样会造成一些隐患,所以 决定把key全部写在后端 ,通过controller提交图片。

####maven依赖

<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>7.2.0</version>
</dependency>

####js主要代码

在summernote初始化中添加上

callbacks: {
onImageUpload: function (files,editor,$editable) { //the onImageUpload API
sendFile(files[0],editor,$editable);
}
},

function sendFile(file,editor,welEditable) {
data = new FormData();
data.append("file", file);
$.ajax({
data: data,
type: "POST",
url: ctx +"/summernote/imgUpload.htm",
cache: false,
contentType: false,
processData: false,
dataType:"json",
success: function(data) {
if (data.code == 0) {
$(docId).summernote('insertImage', "http://xxx"+data.data.key);  //xxx的地方是图片url的前缀 key为上传后图片的名字
} else {
showModelNoBack(data.msg);
}
}
});
}

####controller代码

@AuthPassport
@RequestMapping(value = "/imgUpload", method = RequestMethod.POST)
@ResponseBody
public Object uploadImgage(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
File destFile = null;
if (!file.isEmpty()) {
try {
String path = request.getSession().getServletContext().getRealPath("/upload");
String fileName = UUID.randomUUID().toString().replace("-", "") + file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
destFile = new File(path + "/" + fileName);
FileUtils.copyInputStreamToFile(file.getInputStream(), destFile); //复制临时文件到指定目录
StringMap stringMap = QiniuUtil.upload(fileName, path + "/" + fileName);
return stringMap.map();
} catch (Exception e) {
logger.error(e.getMessage());
throw new BizException(CommonResponseEnum.EXCEPTION);
} finally {
destFile.delete();
}
}
return null;
}

####七牛util代码

/**
* Created by Stay on 2016/11/23  15:26.
*/
public class QiniuUtil {
private static Logger logger = LoggerFactory.getLogger(QiniuUtil.class);

//设置好账号的ACCESS_KEY和SECRET_KEY
private static final String ACCESS_KEY = xxx;
private static final String SECRET_KEY = xxx;
//要上传的空间
private static final String bucketname = "xxx";
//密钥配置
private static final Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
private static final Zone z = Zone.autoZone();
private static final Configuration c = new Configuration(z);

//创建上传对象
private static UploadManager uploadManager = new UploadManager(c);

//简单上传,使用默认策略,只需要设置上传的空间名就可以了
private static String getUpToken() {
return auth.uploadToken(bucketname);
}

/**
* 七牛云上传文件
*
* @param fileName 上传后的文件名
* @param filePath 上传的文件名路径
* @return
* @throws IOException
*/
public static StringMap upload(String fileName, String filePath) throws IOException {
try {
//调用put方法上传
Response res = uploadManager.put(filePath, fileName, getUpToken());
//打印返回的信息
return res.jsonToMap();
} catch (QiniuException e) {
Response r = e.response;
// 请求失败时打印的异常的信息
logger.error(r.toString());
throw new BizException(CommonResponseEnum.EXCEPTION);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Summernote Java springmvc