从服务器发起请求到七牛保存图片

第一步 : 

maven导入依赖,其他的导入架包:

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

第二步 上传七牛 需要一个token值的,所以里面要先产生一个token值在put上传即可





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 com.qiniu.util.StringMap;
import org.joda.time.DateTime;
import org.json.simple.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

/**
 * 七牛上传
 */
@Controller
public class QiNiuUpload {

    private static Logger log = LoggerFactory.getLogger(QiNiuUpload.class);
    private static final String ACCESS_KEY = "七牛注册时给的秘钥";
    private static final String SECRET_KEY = "七牛注册时给的秘钥";

    //要上传的空间名
    private static final String bucketname = "";


	//简单上传

    /**
     * 初始化一个上传管理对象(七牛提供)
     *
     * @return
     */
    private UploadManager getUploadManager() {
//        Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
        Zone z = Zone.autoZone();
        Configuration c = new Configuration(z);
        return new UploadManager(c);
    }

    /**
     * 获得一个上传至七牛的token值
     *
     * @param postfix
     * @return
     */
    public String getUpToken(String postfix) {
        //密钥配置
        Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
        //简单上传,使用默认策略,只需要设置上传的空间名就可以了
        StringMap x = new StringMap();
        x.put("saveKey", "$(etag)" + postfix);
        x.put("returnBody", "{\"name\":\"自定义/"+ DateTime.now().toString("yyyy-MM-dd HH:mm:ss")+"/$(etag)" + postfix + "\",\"size\":\"$(fsize)\",\"w\":\"$(imageInfo.width)\",\"h\":\"$(imageInfo.height)\",\"hash\":\"$(etag)\"}");

        return auth.uploadToken(bucketname, null, 3600, x);
    }

    /**
     * 调用方法传入参数开始上传,返回成功后的文件保存路径
     *
     * @param file
     * @param fileName
     * @return
     * @throws IOException
     */
    public String upload(byte[] file, String fileName) throws IOException {	//不仅仅是byte数组,也可以是文件地址,文件,
        try {
            String postfix = fileName.substring(fileName.lastIndexOf("."), fileName.length());//获得文件名的后缀
            //调用put方法上传
            Response res = getUploadManager().put(file, null, getUpToken(postfix));
            //打印返回的信息
            String resBodyStr = res.bodyString();
            Map<String, String> map = JacksonUtil.readValue(resBodyStr, HashMap.class);
            log.info("七牛上传成功返回:{}", resBodyStr);

            return  map.get("name");	//上传成功后返回的保存文件的名字
        } catch (QiniuException e) {
            Response r = e.response;
            log.error("请求失败时打印的异常的信息:{}",r.toString());
            try {
                log.error("响应的文本信息:{}",r.bodyString());
                return "error";
            } catch (QiniuException e1) {
                log.error("七牛上传失败,打印失败信息:{}",e1.getLocalizedMessage());
                return "error";
            }
        }
    }


}








服务器与前端 请参考我的其他文章   ajax上传文件(poi)


uploadFile  //是上传来的字节输入流
fileName	//文件名字

String uploadUrl = new QiNiuUpload().upload(uploadFile.getBytes(), fileName);










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值