mevan分布式项目图片上传使用七牛云服务器

mevan分布式项目图片上传使用七牛云 (一定要联网…)

1引入依赖坐标

 https://developer.qiniu.com/kodo/sdk/1239/java     七牛云官方文档
   <!--导入坐标:由于我们是webgongc工程,此时导入两个即可-->
        <!--文件上传-->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>

        <!--七牛云-->
        <dependency>
            <groupId>com.qiniu</groupId>
            <artifactId>qiniu-java-sdk</artifactId>
            <version>[7.2.0, 7.2.99]</version>
        </dependency>

2 七牛云 提供的中信息的 配置文件 供上传文件使用

qiniu.properties

#\u5BC6\u94A5\u4FE1\u606F
qiniu.accessKey=v0OcmOW4dv566pMhrNsGL-EaBI0IUQbZniSSAHrG
qiniu.secretKey=KLQbYZRMU4kQto0hXdHs10_BEPUAdve8wavNywdS
#\u4E03\u725B\u4E91\u5B58\u50A8\u7A7A\u95F4\u540D\u79F0 服务数据库
qiniu.bucket=saas-export-ee88
#\u4E00\u4E2A\u6708\u6709\u6548\u671F 域名--->  可以打开图片的域名
qiniu.rtValue=prkp4zejx.bkt.clouddn.com

3 文件上传的工具(注意:使用注解获取配置文件)

package com.itheima.web.utils;

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.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

import java.util.UUID;


@Component
@PropertySource("classpath:properties/qiniu.properties")
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;//图片需要支持能够查看: http://域名+文件名
        } 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;
    }
}

使用

 @RequestMapping("/edit")
    public String edit(ContractProduct contractProduct, MultipartFile productPhoto) throws Exception {
        contractProduct.setCompanyId(super.companyId);
        contractProduct.setCompanyName(super.companyName);
        if (UtilFuns.isEmpty(contractProduct.getId())) { //添加
            String upload = "";
            if (productPhoto != null) { //如果文件存在就实现文件上传
                upload = "http://" + fileUploadUtil.upload(productPhoto);  //-------------->这里直接调用
            }
            contractProduct.setProductImage(upload);
            contractProductService.save(contractProduct);
        } else { //修改
            contractProductService.update(contractProduct);
            System.out.println(contractProduct.getContractId());
        }
        return "redirect:/cargo/contractProduct/list.do?contractId=" + contractProduct.getContractId();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扶摇的星河

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值