图片上传到七牛云

必须要传一个参数类型为 MultipartFile 的

第一步:引入相关配置文件和工具类并导入依赖:

qiniu.properties:

qiniu.accessKey=xxxxxxxxxxxxx       #公钥
qiniu.secretKey=yyyyyyyyyyyyy    #密钥
qiniu.bucket=saas           #存储空间名称
qiniu.rtValue=xxxxxxx        #域名

  公钥密钥在这里找

域名这里找:

import com.google.gson.Gson;
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.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

import java.util.UUID;

@Component
public class FileUploadUtil {

    @Value("${qiniu.accessKey}")
    private String accessKey ;

    @Value("${qiniu.secretKey}")
    private String secretKey;

    @Value("${qiniu.bucket}")
    private String bucket;

    @Value("${qiniu.rtValue}")
    private String rtValue;

    /**
     * 将图片上传到七牛云服务
     *      1.更新用户图片信息(用户id=key)
     *      2.访问图片
     *          存储空间分配的临时域名(免费用户有效期一个月):http://pkbivgfrm.bkt.clouddn.com+上传的文件名
     *      3.对于更新之后访问图片,防止缓存
     *          更新图片之后:访问的时候,再请求连接添加上时间戳
     *
     */
    public String upload(MultipartFile multipartFile)throws Exception{
	    String img = "";
        try {
            //取出原始文件名
            String fileName = multipartFile.getOriginalFilename();
            //随机化文件名
            String uuid = UUID.randomUUID().toString().replace("-","").toUpperCase();
            fileName = uuid+"_"+fileName;
            //构造一个带指定Zone对象的配置类
            //指定上传文件服务器地址:
            Configuration cfg = new Configuration(Zone.zone0());
            //...其他参数参考类注释
            //上传管理器
            UploadManager uploadManager = new UploadManager(cfg);
            //身份认证
            Auth auth = Auth.create(accessKey, secretKey);
            //指定覆盖上传
            String upToken = auth.uploadToken(bucket,fileName);
            //上传
            Response response = uploadManager.put(multipartFile.getBytes(), fileName, upToken);
            //解析上传成功的结果
            DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
            img = rtValue+"/"+fileName;
        } catch (QiniuException ex) {
            System.err.println(ex.getMessage());
            Response r = ex.response;
            System.err.println(r.toString());
            try {
                System.err.println(r.bodyString());
            } catch (QiniuException ex2) {
            }
        }
        return img;
    }
}

  

第二步:配置文件上传解析器,并解析上面的qiniu.properties配置文件

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">    <property name="maxUploadSize" value="10485760"></property>  <!--上传文件大小-->    <property name="maxInMemorySize" value="4096"></property>    <!---->    <property name="defaultEncoding" value="UTF-8"></property>  <!--defaultEncoding:配置字符集编码-->
</bean>

  <!--解析七牛配置文件-->

  <context:property-placeholder location="classpath*:properties/qiniu.properties"/>

第三步:业务代码

@Autowiredprivate FileUploadUtil fileUploadUtil;private static final List ALLOW_IMAGE_TYPE = Arrays.asList("image/jpeg", "image/jpg", "image/png");

public String UploadImage(MultipartFile file) {    //先对上传的图片进行判断    //获取图片的mime类型    String imageMimeType = file.getContentType();    if (!ALLOW_IMAGE_TYPE.contains(imageMimeType)) {        //抛自定义异常    }    //解析图片内容    BufferedImage bufferedImage = null;    try {        bufferedImage = ImageIO.read(file.getInputStream());    } catch (IOException e) {        //抛自定义异常    }    if (bufferedImage == null) {        //抛自定义异常    }    String imgUrl = null;    try {        //调用工具类直接上传        imgUrl = "http://" + fileUploadUtil.upload(file);    } catch (Exception e) {        e.printStackTrace();    }    return imgUrl;}

  

原文地址:https://www.cnblogs.com/3hhh/p/11816211.html

时间: 2024-10-09 18:14:19

图片上传到七牛云的相关文章

KindEditor图片上传到七牛云

自己做了一个网站,编辑器用的是KindEditor,平时会涉及到KindEditor自带的图片上传,但是服务器用的是虚拟主机,没多少空间,就一直想着把图片放在免费的云存储空间,之前看KindEditor的源码和七牛的SDK看得云里雾里的,网上搜索又没有类似的解决方法,只好继续看源码自己搞了,弄了整整一个晚上,基本实现了,下面说说我的做法: 版本说明: KindEditor版本:4x 七牛SDK:7.x.x 后端脚本:PHP 先看一下七牛给出的表单模板,在这里file和token这两个表单项是必须

.Net Core实现将文件上传到七牛云存储

功能:将图片上传到七牛云存储 准备工作 注册七牛账号,提交实名认证(基本上1天内内审核通过) 登录七牛后台->对象存储->新建空间 (基本概念:https://developer.qiniu.com/kodo/manual/3978/the-basic-concept) 新建空间后会有免费域名可以使用.但是:测试域名,限总流量,限单 IP 访问频率,限速,仅供测试使用,不能用于自定义域名的 CNAME.建议还是使用自己的已经ICP备案的域名 CDN加速域名(自己的ICP备案的域名)提交后有个处

vue使用富文本编辑器vue-quill-editor实现配合后台将图片上传至七牛

一.全局注册:main.js import Vue from 'vue' import VueQuillEditor, { Quill } from 'vue-quill-editor' import { ImageDrop } from 'quill-image-drop-module' import ImageResize from 'quill-image-resize-module' import 'quill/dist/quill.core.css' import 'quill/dis

Tp3如何实现本地视频文件上传到七牛云

对于七牛云的使用,估计有些刚接触开发的技术人员还不太清楚,那么更不要说如何实现本地视频上传到七牛云转储了,其实这个技术并没有想象中的那么困难,下面就来跟大家详细介绍一下流程: 1.首先我们要先去寻找七牛云的SDK网址,打开后直接下载就行了; 2.下载完成之后我们把它放在tp框架的./ThinkPHP/Extend/Vendor/目录下; 3.完成之后,前期的准备工作就完成了,接下来就是自己上手写代码了: 首先肯定是先在模板部分建立一个form表单: *视频上传: 我们就提交到News控制器里的d

文件流数组上传到七牛云

首先要注册七牛云,申请个空间,获得密钥.等东西,引入官方sdk包,然后再开发文档中找到代码copy进去就可以了. 因为非常简单,我就直接弄上代码了. 1 package com.qianmo.foru.bean.request; 2 3 import com.qianmo.core.common.CommonRequest; 4 import org.hibernate.validator.constraints.NotBlank; 5 import org.springframework.we

vue+element ui +vue-quill-editor 富文本图片上传到骑牛云

vue-quill-editor上传图片会转换成base64格式,但是这不是我们想要的,之后翻了很多文章才找到想要的,下面直接上代码 <style lang="sass">.quill-editor min-height: 500px background:#fff .ql-container min-height: 500px .ql-snow .ql-editor img max-width: 480px .ql-editor .ql-video max-width:

Tp3.1 文件上传到七牛云

TP3.1 中不支持Composer 就无法用composer 安装 下载历史的SDK https://github.com/qiniu/php-sdk/releases/tag/v7.0.8 下载下来放到 Think 目录下的Vendor下 进入代码 HTML的代码 <form id="upload" method='post' action="file" enctype="multipart/form-data"> <inp

一百三十五:CMS系统之UEditoe编辑器集成以及配置将图片上传到七牛

富文本编辑框,选择UEditor 下载地址:http://ueditor.baidu.com/website/download.html 使用说明:http://fex.baidu.com/ueditor/ 使用 下载下来过后,将指定的几个文件和文件夹拷贝到项目static下 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title&g

5_1_图片上传

图片上传 一 需求 1 图片上传到本地: 2 图片上传到七牛云. 效果图: 二 具体代码实现 1 ToutiaoUtil.java: 用来判断上传的文件名是否合格: package com.nowcoder.util; import com.alibaba.fastjson.JSONObject; import com.nowcoder.controller.LoginController; import org.omg.CORBA.PUBLIC_MEMBER; import org.slf4j