目的在于解决:企业服务器由于处理图片/文档等工作内容,而降低服务器的工作效率,节约开支,七牛云来存储企业上传的图片或者文档,使企业的Web应用快速响应用户的需求。

例如说,我上传(手动上传或代码上传)一张test.png的图片在七牛空间上

样式1:裁剪正中部分,等比缩小生成200x200缩略图

http://7xr5s7.com1.z0.glb.clouddn.com/test.png?imageView/1/w/200/h/200

样式2:宽度固定为200px,高度等比缩小,生成200x133缩略图:

http://7xr5s7.com1.z0.glb.clouddn.com/test.png?imageView2/2/w/200

样式3:高度固定为200px,宽度等比缩小,生成300x200缩略图:

http://7xr5s7.com1.z0.glb.clouddn.com/test.png?imageView2/2/h/200

七牛官网 图片处理配置,也可以定义自己样式,点击查看

1.七牛给我们提供了图片浏览的样式,能符合绝大多数人的需求,那如何把图片上传到七七牛空间,注册,登陆,创建空间,上传即可,下图

android 七牛视频加水印 七牛 图片处理样式_云存储

访问路径: url/images/test.png?+样式

url:七牛默认给你指定的免费域名,可以绑定自己的二级或三级域名.

例如:img.test.com

点击上传即可手动上传。


下面开始介绍如何实现Java代码上传

maven-pom.xml

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

2.JavaDemo代码实现上传

package com.bigluobo.service;

/**
 * Created by Administrator on 2016/2/23.
 */

import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.UploadManager;
import com.qiniu.util.*;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.*;

public class UploadDemo {
    String ACCESS_KEY = "ACCESS_KEY";
    String SECRET_KEY = "SECRET_KEY ";
    Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
    UploadManager uploadManager = new UploadManager();

    private String calcFileName(){
        SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmmss");
        Date date=new Date();
        String filename=sdf.format(date);
        return filename;
    }

    //获得随机值
    private  final String generateRandomString(int length) {
        String allChar = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
        StringBuffer sb = new StringBuffer();
        Random random = new Random();
        for (int i = 0; i < length; i++) {
            sb.append(allChar.charAt(random.nextInt(allChar.length())));
        }
        return sb.toString();
    }

    // 覆盖上传
/*可以参考七牛的上传策略
http://developer.qiniu.com/docs/v6/api/reference/security/put-policy.html
指定上传的目标资源空间(Bucket)和资源键名(Key)。
有两种格式:
● <bucket>,表示允许用户上传文件到指定的 bucket。在这种格式下文件只能“新增”,若已存在同名资源则会失败。
● <bucket>:<key>,表示只允许用户上传指定key的文件。在这种格式下文件默认允许“修改”,已存在同名资源则会被本次覆盖。如果希望只能上传指定key的文件,并且不允许修改,那么可以将下面的 insertOnly 属性值设为 1。*/

    private String getUpToken(String filename){
        return auth.uploadToken("images", filename, 3600, new StringMap().put("scope", "images")
                .put("insertOnly",1)
                .put("mimeLimit","image/*"));//限制只能上传图片
    }

    public void upload() throws QiniuException {
        File file=new File("C:\\Users\\Administrator\\Desktop\\2.png");
        try {
            String token=getUpToken(calcFileName());
            Response ress=uploadManager.put(file, calcFileName(), token);
            System.out.println(ress.bodyString());
        }catch (QiniuException e){
            Response r=e.response;
            // 请求失败时简单状态信息
            System.out.println(r.toString());
            try {
                // 响应的文本信息
                System.out.println(r.bodyString());
            //  System.out.println(r.);
            } catch (QiniuException e1) {
                //ignore
            }
        }
    }

    public static void main(String args[]) throws QiniuException{
        new UploadDemo().upload();
    }
}