美文网首页js
七牛云照片上传

七牛云照片上传

作者: 月哥说了算 | 来源:发表于2019-07-19 20:37 被阅读0次

    七牛云存储

    七牛云(隶属于上海七牛信息技术有限公司)是国内领先的以视觉智能和数据智能为核心的企业级云计算服务商,同时也是国内知名智能视频云服务商,累计为 70 多万家企业提供服务,覆盖了国内80%网民。围绕富媒体场景推出了对象存储、融合 CDN 加速、容器云、大数据平台、深度学习平台等产品、并提供一站式智能视频云解决方案。为各行业及应用提供可持续发展的智能视频云生态,帮助企业快速上云,创造更广阔的商业价值。

    官网:https://www.qiniu.com/

    这篇文章主要使用的是七牛云提供的对象存储服务来存储图片。

    前提:

    在七牛云官网注册账号,新建存储空间,会给你域名、 AccessKey/SecretKey,后面上传会用到。

    使用技术:

    后端:ssm+Dubbo
    前端:vue和element-ui

    第一步:使用Java SDK操作七牛云需要导入如下maven坐标

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

    第二步:封装工具类

    package com.gzy.health.utils;
    
    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;
    
    import java.io.FileInputStream;
    import java.util.UUID;
    
    /**
     * 七牛云工具类
     */
    public class QiniuUtils {
        public  static String qiniu_img_url_pre = "http://puu5tu0hl.bkt.clouddn.com/";
        public  static String accessKey = "wz3fgxFmBhU-Ao7-kAXCPNmojAl9BkN2c5HgUun";
        public  static String secretKey = "74ARWFtV6fzDPWAS4TDI0UPASNYFvCD5rXMPTMa";
        public  static String bucket = "gzy_health";
    
        /**
         * 上传文件
         * @param bytes 文件内容,字节数组
         * @param uploadFileName 保存到服务端的文件名
         */
        public static void upload2Qiniu(byte[] bytes, String uploadFileName){
            //构造一个带指定Zone对象的配置类,Zone.zone0()代表华东地区
            Configuration cfg = new Configuration(Zone.zone0());
            //...其他参数参考类注释
            UploadManager uploadManager = new UploadManager(cfg);
    
            //默认不指定key的情况下,以文件内容的hash值作为文件名
            String key = uploadFileName;
            Auth auth = Auth.create(accessKey, secretKey);
            String upToken = auth.uploadToken(bucket);
            try {
                Response response = uploadManager.put(bytes, key, upToken);
                //解析上传成功的结果
                System.out.println(response.bodyString());
                // 访问路径
                System.out.println(qiniu_img_url_pre+uploadFileName);
            } catch (QiniuException ex) {
                Response r = ex.response;
                System.err.println(r.toString());
                try {
                    System.err.println(r.bodyString());
                } catch (QiniuException ex2) {
                    //ignore
                    ex.printStackTrace();
                }
            }
        }
        // 测试上传
        public static void main(String args[]) throws Exception{
            // 测试上传
            String localFilePath = "D:\\TempG\\test.jpg";
            FileInputStream fileInputStream = new FileInputStream(localFilePath);
            byte[] data = new byte[1024*1024];
            fileInputStream.read(data);
            String saveFileName = UUID.randomUUID().toString().replace("-","");
            QiniuUtils.upload2Qiniu(data,saveFileName);
        }
    }
    

    第三步:导入图片上传依赖

    <!--u图片上传工具-->
            <dependency>
                <groupId>commons-fileupload</groupId>
                <artifactId>commons-fileupload</artifactId>
            </dependency>
    

    第四步:配置spring文件

    <!--文件 上传 组件-->
        <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <!--最大上传100M-->
            <property name="maxUploadSize" value="104857600"/>
            <!--读取文件到内存中最大的字节数,io流每次读写-->
            <property name="maxInMemorySize" value="4096"/>
            <property name="defaultEncoding" value="UTF-8"/>
        </bean>
    

    第五步:提供上传控制器

    代码后面redis存储照片名称,是为定时删除,可忽略。

    public class SetMealController {
        @Autowired
        private JedisPool jedisPool;
        @Reference
       private SetMealService setMealService;
        @RequestMapping("/upload")
        public Result upload(@RequestParam(name="imgFile") MultipartFile imgFile){
            try {
            //获取原文件名
            String filename = imgFile.getOriginalFilename();
            //使用UUId自定义文件名
            String savefilename=UUID.randomUUID().toString().replace("-","")+"_"+filename;
            //利用工具包上传七牛云
            QiniuUtils.upload2Qiniu(imgFile.getBytes(),savefilename);
            //文件上传后的路径,传回前端进行显示
            String filepath=QiniuUtils.qiniu_img_url_pre+savefilename;
             //保存图片名到redis用于后面的定时的删除
                jedisPool.getResource().sadd(RedisConst.SETMEAL_PIC_RESOURCES,savefilename);
             return new Result(true,MessageConst.PIC_UPLOAD_SUCCESS,filepath);
            }
            catch (IOException e) {
                e.printStackTrace();
                return new Result(false,MessageConst.PIC_UPLOAD_FAIL);
            }
        }
    }
    

    相关文章

      网友评论

        本文标题:七牛云照片上传

        本文链接:https://www.haomeiwen.com/subject/wpqelctx.html