美文网首页
java七牛云文件上传

java七牛云文件上传

作者: 吃猫的鱼0 | 来源:发表于2018-01-05 11:33 被阅读0次

package com.dtgy.youguoju.utils;

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 2017年6月6日 上午10:56:32

/
public class QiniuUtils {
private static final String ACCESS_KEY = "9Z2RnhG5TeABQOchlShvXj1apSeXpJnNZSm7IEp";
private static final String SECRET_KEY = "M_M3WEMWUybEoOTEPGeef2keYzL8KVvN_KorAhN";
/
* 默认上传空间 /
private static final String BUCKET_NAME = "defaultpic";// 默认到其他类中
/
* 空间默认域名 */
private static final String BUCKET_HOST_NAME = "";

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("..............");
    }
}
/**
 * 删除七牛上的文件
 * @param path  数据库中文件的路径
 * @param space 所存空间名称
 */
public boolean deleteImageFromQiNiu(String path, String space) {
    if (!path.isEmpty()) {
        String[] split = path.split(".com/");
        if (split.length>=2) {
            FileInfo findOneFile=null;
            try {//查询云端是否有该文件
                findOneFile = QiniuUtils.findOneFile(space,split[1]);
            } catch (QiniuException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            if (findOneFile!=null) {//删除云端文件
                try {
                    //.deleteFile(空间名, 文件名);
                    QiniuUtils.deleteFile(space, split[1]);
                    return true;
                    //结束返回成功
                } catch (QiniuException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                    //出现异常返回fase
                    return false;
                }
            }else {
                //如果七牛中没有该图片则返回成功
                return true;
            }
        }else {
            //如果截取的数组小于2则是无效数据返回成功
            return true;
        }
    }else {
        //如果数据库中存储的问空则直接返回成功
        return true;
    }
}

}

相关文章

网友评论

      本文标题:java七牛云文件上传

      本文链接:https://www.haomeiwen.com/subject/jkijnxtx.html