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

来源:互联网 发布:佳能相机照片导入mac 编辑:程序博客网 时间:2024/05/22 16:06

第一步 : 

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;/** * 七牛上传 */@Controllerpublic 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);










0 0
原创粉丝点击