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

由于项目中需要图片上传至七牛云,以前是把七牛的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);
        }
    }
}

转载于:https://my.oschina.net/u/2551035/blog/793888

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值