`
lxwt909
  • 浏览: 573396 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

七牛操作工具类(Java版)

阅读更多

    没什么好说的,千言万语都在代码中,亮剑看码:

package com.yida.framework.base.util.qiniu;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.apache.commons.io.IOUtils;

import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.BucketManager;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.storage.model.FileInfo;
import com.qiniu.storage.model.FileListing;
import com.qiniu.util.Auth;

/**
 * @ClassName: QiniuUtils
 * @Description: 七牛操作工具类
 * @author Lanxiaowei(736031305@qq.com)
 * @date 2015年12月8日 上午10:56:32
 * 
 */
public class QiniuUtils {
	private static final String ACCESS_KEY = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
	private static final String SECRET_KEY = "*******************************";
	/**默认上传空间*/
	private static final String BUCKET_NAME = "XXXXXXXXXXXXXXX";
	/**空间默认域名*/
	private static final String BUCKET_HOST_NAME = "http://xxxxxxxxxxxxxxxx.clouddn.com";
	
	private static UploadManager uploadManager = new UploadManager();
	
	private static int LIMIT_SIZE = 1000;
	/**
	 * @Author: Lanxiaowei(736031305@qq.com)
	 * @Title: listBucket
	 * @Description: 返回七牛帐号的所有空间
	 * @param @return
	 * @param @throws QiniuException
	 * @return String[]
	 * @throws
	 */
	public static String[] listBucket() throws QiniuException {
		Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
		BucketManager bucketManager = new BucketManager(auth);
		return bucketManager.buckets();
	}
	
	/**
	 * @Author: Lanxiaowei(736031305@qq.com)
	 * @Title: listFileOfBucket
	 * @Description: 获取指定空间下的文件列表
	 * @param bucketName  空间名称
	 * @param prefix      文件名前缀
	 * @param limit       每次迭代的长度限制,最大1000,推荐值 100[即一个批次从七牛拉多少条]
	 * @param @return
	 * @return List<FileInfo>
	 * @throws
	 */
	public static List<FileInfo> listFileOfBucket(String bucketName,String prefix,int limit) {
		Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
		BucketManager bucketManager = new BucketManager(auth);
		BucketManager.FileListIterator it = bucketManager.createFileListIterator(bucketName, prefix, limit, null);
		List<FileInfo> list = new ArrayList<FileInfo>();
		while (it.hasNext()) {
		    FileInfo[] items = it.next();
		    if (null != items && items.length > 0) {
		        list.addAll(Arrays.asList(items));
		    }
		}
		return list;
	}
	
	/**
	 * @Author: Lanxiaowei(736031305@qq.com)
	 * @Title: uploadFile
	 * @Description: 七牛图片上传
	 * @param @param inputStream    待上传文件输入流
	 * @param @param bucketName     空间名称
	 * @param @param key            空间内文件的key
	 * @param @param mimeType       文件的MIME类型,可选参数,不传入会自动判断
	 * @param @return
	 * @param @throws IOException
	 * @return String
	 * @throws
	 */
	public static String uploadFile(InputStream inputStream,String bucketName,String key,String mimeType) throws IOException {  
		Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
	    String token = auth.uploadToken(bucketName);
	    byte[] byteData = IOUtils.toByteArray(inputStream);
	    Response response = uploadManager.put(byteData, key, token, null, mimeType, false);
	    inputStream.close();
	    return response.bodyString();
	}
	
	/**
	 * @Author: Lanxiaowei(736031305@qq.com)
	 * @Title: uploadFile
	 * @Description: 七牛图片上传
	 * @param @param inputStream    待上传文件输入流
	 * @param @param bucketName     空间名称
	 * @param @param key            空间内文件的key
	 * @param @return
	 * @param @throws IOException
	 * @return String
	 * @throws
	 */
	public static String uploadFile(InputStream inputStream,String bucketName,String key) throws IOException {  
		Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
	    String token = auth.uploadToken(bucketName);
	    byte[] byteData = IOUtils.toByteArray(inputStream);
	    Response response = uploadManager.put(byteData, key, token, null, null, false);
	    inputStream.close();
	    return response.bodyString();
	}
	
	/**
	 * @Author: Lanxiaowei(736031305@qq.com)
	 * @Title: uploadFile
	 * @Description: 七牛图片上传
	 * @param filePath     待上传文件的硬盘路径
	 * @param fileName     待上传文件的文件名
	 * @param bucketName   空间名称
	 * @param key          空间内文件的key
	 * @param @return
	 * @param @throws IOException
	 * @return String
	 * @throws
	 */
	public static String uploadFile(String filePath,String fileName,String bucketName,String key) throws IOException {  
	    Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
	    String token = auth.uploadToken(bucketName);
	    InputStream is = new FileInputStream(new File(filePath + fileName));
	    byte[] byteData = IOUtils.toByteArray(is);
	    Response response = uploadManager.put(byteData, (key == null || "".equals(key))? fileName : key, token);
	    is.close();
	    return response.bodyString();
	}
	
	/**
	 * @Author: Lanxiaowei(736031305@qq.com)
	 * @Title: uploadFile
	 * @Description: 七牛图片上传[若没有指定文件的key,则默认将fileName参数作为文件的key]
	 * @param filePath     待上传文件的硬盘路径
	 * @param fileName     待上传文件的文件名
	 * @param bucketName   空间名称
	 * @param @return
	 * @param @throws IOException
	 * @return String
	 * @throws
	 */
	public static String uploadFile(String filePath,String fileName,String bucketName) throws IOException {  
		Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
	    String token = auth.uploadToken(bucketName);
	    InputStream is = new FileInputStream(new File(filePath + fileName));
	    byte[] byteData = IOUtils.toByteArray(is);
	    Response response = uploadManager.put(byteData, fileName, token);
	    is.close();
	    return response.bodyString();
	}
	
	/**
	 * @throws QiniuException 
	 * @Author: Lanxiaowei(736031305@qq.com)
	 * @Title: fetchToBucket
	 * @Description: 提取网络资源并上传到七牛空间里
	 * @param url           网络上一个资源文件的URL
	 * @param bucketName    空间名称
	 * @param key           空间内文件的key[唯一的]
	 * @param @return
	 * @return String
	 * @throws
	 */
	public static String fetchToBucket(String url,String bucketName,String key) throws QiniuException {
		Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
		BucketManager bucketManager = new BucketManager(auth);
		DefaultPutRet putret = bucketManager.fetch(url, bucketName, key);
		return putret.key;
	}
	
	/**
	 * @Author: Lanxiaowei(736031305@qq.com)
	 * @Title: fetchToBucket
	 * @Description: 提取网络资源并上传到七牛空间里,不指定key,则默认使用url作为文件的key
	 * @param url
	 * @param bucketName
	 * @param @return
	 * @param @throws QiniuException
	 * @return String
	 * @throws
	 */
	public static String fetchToBucket(String url,String bucketName) throws QiniuException {
		Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
		BucketManager bucketManager = new BucketManager(auth);
		DefaultPutRet putret = bucketManager.fetch(url, bucketName);
		return putret.key;
	}
	
	/**
	 * @throws QiniuException 
	 * @Author: Lanxiaowei(736031305@qq.com)
	 * @Title: copyFile
	 * @Description: 七牛空间内文件复制
	 * @param bucket         源空间名称
	 * @param key            源空间里文件的key(唯一的)
	 * @param targetBucket   目标空间
	 * @param targetKey      目标空间里文件的key(唯一的)
	 * @return void
	 * @throws
	 */
	public static void copyFile(String bucket, String key, String targetBucket, String targetKey) throws QiniuException {
		Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
		BucketManager bucketManager = new BucketManager(auth);
		bucketManager.copy(bucket, key, targetBucket, targetKey);
	}
	
	/**
	 * @Author: Lanxiaowei(736031305@qq.com)
	 * @Title: moveFile
	 * @Description: 七牛空间内文件剪切
	 * @param bucket         源空间名称
	 * @param key            源空间里文件的key(唯一的)
	 * @param targetBucket   目标空间
	 * @param targetKey      目标空间里文件的key(唯一的)
	 * @param @throws QiniuException
	 * @return void
	 * @throws
	 */
	public static void moveFile(String bucket, String key, String targetBucket, String targetKey) throws QiniuException {
		Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
		BucketManager bucketManager = new BucketManager(auth);
		bucketManager.move(bucket, key, targetBucket, targetKey);
	}
	
	/**
	 * @Author: Lanxiaowei(736031305@qq.com)
	 * @Title: renameFile
	 * @Description: 七牛空间内文件重命名
	 * @param bucket
	 * @param key
	 * @param targetKey
	 * @param @throws QiniuException
	 * @return void
	 * @throws
	 */
	public static void renameFile(String bucket, String key, String targetKey) throws QiniuException {
		Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
		BucketManager bucketManager = new BucketManager(auth);
		bucketManager.rename(bucket, key, targetKey);
	}
	
	/**
	 * @Author: Lanxiaowei(736031305@qq.com)
	 * @Title: deleteFile
	 * @Description: 七牛空间内文件删除
	 * @param bucket    空间名称
	 * @param key       空间内文件的key[唯一的]
	 * @param @throws QiniuException
	 * @return void
	 * @throws
	 */
	public static void deleteFile(String bucket, String key) throws QiniuException {
		Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
		BucketManager bucketManager = new BucketManager(auth);
		bucketManager.delete(bucket, key);
	}
	
	/**
	 * @Author: Lanxiaowei(736031305@qq.com)
	 * @Title: findFiles
	 * @Description: 返回指定空间下的所有文件信息
	 * @param @param bucketName   空间名称
	 * @param @param prefix       文件key的前缀
	 * @param @param limit        批量提取的最大数目
	 * @param @return
	 * @param @throws QiniuException
	 * @return FileInfo[]
	 * @throws
	 */
	public static FileInfo[] findFiles(String bucketName,String prefix,int limit) throws QiniuException {
		Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
		BucketManager bucketManager = new BucketManager(auth);
		FileListing listing = bucketManager.listFiles(bucketName, prefix, null, limit, null);
		if(listing == null || listing.items == null || listing.items.length <= 0) {
			return null;
		}
		return listing.items;
	}
	
	/**
	 * @Author: Lanxiaowei(736031305@qq.com)
	 * @Title: findFiles
	 * @Description: 返回指定空间下的所有文件信息
	 * @param @param bucketName   空间名称
	 * @param @param prefix       文件key的前缀
	 * @param @return
	 * @param @throws QiniuException
	 * @return FileInfo[]
	 * @throws
	 */
	public static FileInfo[] findFiles(String bucketName,String prefix) throws QiniuException {
		Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
		BucketManager bucketManager = new BucketManager(auth);
		FileListing listing = bucketManager.listFiles(bucketName, prefix, null, LIMIT_SIZE, null);
		if(listing == null || listing.items == null || listing.items.length <= 0) {
			return null;
		}
		return listing.items;
	}
	
	/**
	 * @Author: Lanxiaowei(736031305@qq.com)
	 * @Title: findFiles
	 * @Description: 返回指定空间下的所有文件信息
	 * @param @param bucketName
	 * @param @param key
	 * @param @return
	 * @param @throws QiniuException
	 * @return FileInfo[]
	 * @throws
	 */
	public static FileInfo[] findFiles(String bucketName) throws QiniuException {
		Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
		BucketManager bucketManager = new BucketManager(auth);
		FileListing listing = bucketManager.listFiles(bucketName, null, null, LIMIT_SIZE, null);
		if(listing == null || listing.items == null || listing.items.length <= 0) {
			return null;
		}
		return listing.items;
	}
	
	/**
	 * @Author: Lanxiaowei(736031305@qq.com)
	 * @Title: findOneFile
	 * @Description: 返回指定空间下的某个文件
	 * @param @param bucketName
	 * @param @param key
	 * @param @param limit
	 * @param @return
	 * @param @throws QiniuException
	 * @return FileInfo
	 * @throws
	 */
	public static FileInfo findOneFile(String bucketName,String key,int limit) throws QiniuException {
		Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
		BucketManager bucketManager = new BucketManager(auth);
		FileListing listing = bucketManager.listFiles(bucketName, key, null, limit, null);
		if(listing == null || listing.items == null || listing.items.length <= 0) {
			return null;
		}
		return (listing.items)[0];
	}
	
	/**
	 * @Author: Lanxiaowei(736031305@qq.com)
	 * @Title: findOneFile
	 * @Description: 返回指定空间下的某个文件(重载)
	 * @param @param bucketName
	 * @param @param key
	 * @param @return
	 * @param @throws QiniuException
	 * @return FileInfo
	 * @throws
	 */
	public static FileInfo findOneFile(String bucketName,String key) throws QiniuException {
		Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
		BucketManager bucketManager = new BucketManager(auth);
		FileListing listing = bucketManager.listFiles(bucketName, key, null, LIMIT_SIZE, null);
		if(listing == null || listing.items == null || listing.items.length <= 0) {
			return null;
		}
		return (listing.items)[0];
	}

       /**
	 * @Author: Lanxiaowei(736031305@qq.com)
	 * @Title: getFileAccessUrl
	 * @Description: 返回七牛空间内指定文件的访问URL
	 * @param @param key
	 * @param @return
	 * @param @throws QiniuException
	 * @return String
	 * @throws
	 */
	public static String getFileAccessUrl(String key) throws QiniuException {
		return BUCKET_HOST_NAME + "/" + key;
	}
	
	public static void main(String[] args) throws IOException {
		//uploadFile("C:/test.jpg");
		
		/*String[] buckets = listBucket();
		for(String bucket : buckets) {
			System.out.println(bucket);
		}*/
		
		/*List<FileInfo> list = listFileOfBucket(BUCKET_NAME, null, 1000);
		for(FileInfo fileInfo : list) {
			System.out.println("key:" + fileInfo.key);
			System.out.println("hash:" + fileInfo.hash);
			System.out.println("................");
		}*/
		
		//copyFile(BUCKET_NAME, "images-test", BUCKET_NAME, "images-test-1111");
		
		//renameFile(BUCKET_NAME, "images-test-1111", "images-test-2222.jpg");
		
		//deleteFile(BUCKET_NAME, "images-test-2222.jpg");
		
		//fetchToBucket("http://www.nanrenwo.net/uploads/allimg/121026/14-1210261JJD03.jpg", BUCKET_NAME,"1111111111111111.jpg");
		
		FileInfo[] fileInfos = findFiles(BUCKET_NAME, "10", LIMIT_SIZE);
		for(FileInfo fileInfo : fileInfos) {
			System.out.println(fileInfo.key);
			System.out.println(fileInfo.hash);
			System.out.println("..............");
		}
	}
}

 

分享到:
评论

相关推荐

    七牛的Token生成

    在使用七牛云存储进行文件上传时,为了确保数据的安全性和防止非法操作,七牛引入了一种名为“Token”的验证机制。本文将详细介绍如何生成七牛的Token,以及它在上传过程中的作用。 首先,我们需要理解什么是七牛...

    十二生肖和星座Java工具类.rar

    在Java编程中,工具类(Util Class)是一种常见的设计模式,通常包含一组静态方法,用于执行特定的操作或提供通用的功能。在这个"十二生肖和星座Java工具类"中,我们可以假设作者创建了一个Java类,该类提供了与计算...

    Java常用代码工具类大集合(推荐)

    封装了一些常用Java操作方法,便于重复开发利用. 另外希望身为Java牛牛的你们一起测试和完善,欢迎入群263641914 一起封装和完成常用的Java代码。 节约撸码时间以方便有更多的时间去把妹子~

    很牛的Java截图工具源码

    这个“很牛的Java截图工具源码”提供了一种高效、易用的方法来实现这一功能。下面我们将详细探讨Java截图工具的实现原理以及相关技术知识点。 首先,Java截图的核心在于获取屏幕图像数据。在Java中,我们可以利用`...

    很牛的Java截图工具

    其中,`TestFrame.java`、`JTFrame.java`和`Resize.java`可能是这个工具的主要类。`TestFrame`可能是一个测试窗口,用于展示截图功能;`JTFrame`可能自定义了Java的JFrame组件,扩展了原生窗口的功能;而`Resize....

    七牛图片上传

    1. **qiniu-java-sdk**: 这是七牛官方提供的Java SDK,包含了所有与七牛云存储交互所需的类库,如认证、上传、下载、管理等操作。 2. **httpclient**: 七牛SDK可能会依赖Apache HttpClient库,用于处理HTTP请求和...

    Java8的LocalDateTime工具类,包含一些比较常用的功能。

    LocalDateTime常用操作工具类,主要包括的工具如下: - LocalDateTime转为Date - Date转为LocalDateTime - LocalDateTime转为String(yyyy-MM-dd HH:mm:ss) - LocalDateTime转为String - String转为LocalDateTime -...

    七牛7.2.3上传所需jar包

    6. **Utils模块**:包含一些通用工具类,如日期处理、字符串编码解码等。 在实际开发中,引入七牛7.2.3上传jar包的步骤通常是: 1. **添加依赖**:如果你使用Maven,可以在pom.xml文件中添加七牛云的依赖项,或者...

    java(阳历转换为农历).pdf

    在Java中,日期类是java.util包下的一个类,提供了日期和时间相关的操作。Date类有多个构造函数,可以使用不同的方式创建日期对象。例如,使用new Date()构造函数可以创建当前日期对象。 知识点二:阳历和农历的...

    七牛文件上传_jar包

    总之,【七牛文件上传_jar包】是开发者在Java环境中无缝接入七牛云存储服务的重要工具,通过它,你可以轻松实现文件的高效、安全上传,同时享受到七牛云提供的各种高级功能和服务。在实际开发中,务必参考七牛云的...

    java+localdatetime +工具类

    提取关于日期时间操作方法,形成工具类,提升开发效率

    七牛上传文件使用到的jar包

    这个“七牛上传文件使用到的jar包”包含了七牛云服务的相关库,使得开发者能够在Java应用程序中实现与七牛云平台的无缝对接,进行文件的上传操作。 首先,要理解七牛云的API工作原理。七牛云提供RESTful API,通过...

    七牛云存储7.1.3版java所需要的jar文件

    3. **okio-1.6.0.jar**:Okio是OkHttp的一个依赖库,它提供了一套低级别的IO操作工具,包括缓冲区管理和流操作,优化了数据读写性能。Okio的设计目的是简化常见的I/O任务,如读取和写入文件、网络流以及内存中的数据...

    nariit-sgcc-common-1.0_JAVA通用工具类_sgcc_

    《JAVA通用工具类——nariit-sgcc-common-1.0深入解析》 在软件开发过程中,为了提高代码的复用性和效率,开发者通常会创建一些工具类库,以供项目中频繁使用的功能调用。"nariit-sgcc-common-1.0"就是这样一个针对...

    牛客网Java专项50题详解

    ### 牛客网Java专项50题详解 #### 1. 构造函数与类的关系 - **构造函数省略**: 当我们定义了一个类但没有显式地编写构造函数时,默认情况下,Java编译器会自动为我们提供一个无参构造函数。如果省略构造函数,则在...

    java上传文件到七牛云需要的jar

    - **okio-1.6.0**: Okio是OkHttp的配套库,提供了一套高效的IO操作工具,优化了数据读写速度。 - **qiniu-java-sdk**: 这是七牛云的Java SDK主库,包含了所有与七牛云交互所需的类和接口。 在实际开发中,你需要将...

    很牛的java反编译工具

    总的来说,"很牛的java反编译工具"是一个功能强大的软件,能够帮助开发者快速理解和探索Java字节码,无论它是单独的类文件还是整个项目或库。通过提供批量反编译和.jar支持,它简化了工作流程,使得源代码分析变得...

    最牛X的高级java书籍《java深度历险》(深入java,适合中、高级java程序员)

    多线程和并发编程是Java的重要特性,书中有详细章节讲述线程的创建、同步、通信以及死锁等问题,还有Java并发工具类如Semaphore、CyclicBarrier、ExecutorService的使用。理解这些内容能够帮助开发者编写出高效且...

    jdk1.6,七牛环境

    压缩包中的"七牛jdk1.6第三方包"可能包含了专门为JDK1.6版本设计的七牛云Java SDK,这些库文件包含了与七牛云服务交互所需的所有类和方法。开发者可以通过导入这些库,快速地在JDK1.6环境中集成七牛云服务。 总结...

    史上最牛的java分页技术

    综上所述,这个“史上最牛的Java分页技术”其实是一种基于SSH框架和Ajax的高效分页实现,它通过自定义的`PageSeparator`类进行核心计算,并结合Struts的表单处理机制,确保了分页功能的稳定性和用户友好性。...

Global site tag (gtag.js) - Google Analytics