jfinal alioss插件

参考阿里oss api自行扩展使用。

import com.aliyun.oss.OSSClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class AliOssConfig {
    private static final Logger logger = LoggerFactory.getLogger(AliOssConfig.class);

    private String endpoint;
    private String bucketName;
    private String accessKeyId;
    private String accessKeySecret;
    OSSClient ossClient = null;

    public AliOssConfig(String propertiesFile) {
        Properties properties = new Properties();
        InputStream is = AliOssConfig.class.getClassLoader().getResourceAsStream(propertiesFile);
        try {
            properties.load(is);
        } catch (IOException e) {
            logger.error("AliOssConfig", e);
        }

        endpoint = properties.getProperty("endpoint");
        bucketName = properties.getProperty("bucketName");
        accessKeyId = properties.getProperty("accessKeyId");
        accessKeySecret = properties.getProperty("accessKeySecret");
        ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
    }

    public OSSClient getOssClient() {
        return ossClient;
    }

    public void setOssClient(OSSClient ossClient) {
        this.ossClient = ossClient;
    }

    public String getEndpoint() {
        return endpoint;
    }

    public void setEndpoint(String endpoint) {
        this.endpoint = endpoint;
    }

    public String getBucketName() {
        return bucketName;
    }

    public void setBucketName(String bucketName) {
        this.bucketName = bucketName;
    }

    public String getAccessKeyId() {
        return accessKeyId;
    }

    public void setAccessKeyId(String accessKeyId) {
        this.accessKeyId = accessKeyId;
    }

    public String getAccessKeySecret() {
        return accessKeySecret;
    }

    public void setAccessKeySecret(String accessKeySecret) {
        this.accessKeySecret = accessKeySecret;
    }

}
/**
 * Created by Administrator on 2017/9/22.
 */
public class AliOssConstant {
    /**
     * 阿里云oss存储文件夹
     */
    public static final String OSS_KEY_ACTIVITY = "";
    public static final String OSS_KEY_COMM_ACTIVITY = "";
    public static final String OSS_KEY_COMM_SHOPS = "";
    public static final String OSS_KEY_COMM_THEMES = "";
    public static final String OSS_KEY_COMMENT = "";
    public static final String OSS_KEY_FEATTURE = "";
    public static final String OSS_KEY_INDEX_CAROUSELS = "";
    public static final String OSS_KEY_MARKET = "";
    public static final String OSS_KEY_MARKETLOGO = "";
    public static final String OSS_KEY_RAIDERS = "";
    public static final String OSS_KEY_SECTION = "";
    public static final String OSS_KEY_SERVICE = "service";
    public static final String OSS_KEY_SHOP = "shop";
    public static final String OSS_KEY_SHOPLOGO = "shopLogo";
    public static final String OSS_KEY_SHOP_LOGO = "shop_logo";
    public static final String OSS_KEY_THEMES = "themes";
    public static final String OSS_KEY_TRADING_AREA_ATLAS = "trading_area_atlas";
    public static final String OSS_KEY_TYPELIBS = "typelibs";
    public static final String OSS_KEY_USER = "user";
    public static final String OSS_KEY_VIDEO = "video";
    public static final String OSS_KEY_VIDEOIMGS = "videoImgs";
    public static final String OSS_KEY_VIDEOLOGS = "videoLogos";
    public static final String OSS_KEY_AREA = "area";

    /*****-OSS图片样式-*****/
    public static final String OSS_STYLE_RESIZE = "image/resize,p_50";
}
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.model.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Date;
import java.util.List;
import java.util.UUID;

/**
 * Created with IntelliJ IDEA.
 *
 * @author zsq
 * @version V1.0.0
 * @date
 */
public class AliOssKit {
    private static final Logger logger = LoggerFactory.getLogger(AliOssKit.class);
    static AliOssConfig mConfig;

    static void init(AliOssConfig config) {
        mConfig = config;
    }

    static void destory() {
        if (mConfig.getOssClient() != null) mConfig.getOssClient().shutdown();
    }

    /*****-管理Bucket-*****/
    /**
     * 创建 存储空间
     *
     * @param bucketName
     * @return
     */
    public static Bucket createBucket(String bucketName) {
        try {
            CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName);
            // 设置bucket权限为公共读,默认是私有读写
            createBucketRequest.setCannedACL(CannedAccessControlList.Private);
            // 设置bucket存储类型为低频访问类型,默认是标准类型
            createBucketRequest.setStorageClass(StorageClass.Standard);
            return mConfig.getOssClient().createBucket(createBucketRequest);
        } catch (Exception e) {
            logger.error("创建存储空间失败", e);
        }
        return null;
    }

    /**
     * 获取 前100个Bucket
     *
     * @return
     */
    public static List<Bucket> getBucketList() {
        try {
            ListBucketsRequest listBucketsRequest = new ListBucketsRequest();
            // 设定过滤前缀,不设定不过滤
            //listBucketsRequest.setPrefix("");
            // 设定结果从marker之后按字母排序的第一个开始返回,默认从头开始
            //listBucketsRequest.setMarker("");
            // 设定此次返回的bucket的最大数,默认为100,不能大于1000
            //listBucketsRequest.setMaxKeys(100);
            return mConfig.getOssClient().listBuckets();
        } catch (Exception e) {
            logger.error("获取Bucket列表失败", e);
        }
        return null;
    }

    /**
     * 删除Bucket
     *
     * @return
     */
    public static boolean deleteBucket(String bucketName) {
        try {
            if (doesBucketExist(bucketName)) mConfig.getOssClient().deleteBucket(bucketName);
            return true;
        } catch (Exception e) {
            logger.error("删除Bucket失败", e);
        }
        return false;
    }

    public static boolean doesBucketExist(String bucketName) {
        try {
            return mConfig.getOssClient().doesBucketExist(bucketName);
        } catch (Exception e) {
            logger.error("验证失败", e);
        }
        return false;
    }

    /**
     * 设置存储空间权限
     *
     * @param bucketName
     * @param acl
     */
    public static void setBucketAcl(String bucketName, CannedAccessControlList acl) {
        mConfig.getOssClient().setBucketAcl(bucketName, acl);
    }

    /**
     * 获取空间权限
     *
     * @param bucketName
     * @return
     */
    public static String getBucketAcl(String bucketName) {
        if (doesBucketExist(bucketName))
            return mConfig.getOssClient().getBucketAcl(bucketName).getCannedACL().toString();
        return null;
    }

    /**
     * 获取区域
     *
     * @param bucketName
     * @return
     */
    public static String getBucketLocation(String bucketName) {
        if (doesBucketExist(bucketName))
            return mConfig.getOssClient().getBucketLocation(bucketName);
        return null;
    }

    /**
     * 获取Bucket Info
     *
     * @param bucketName
     * @return
     */
    public static BucketInfo getBucketInfo(String bucketName) {
        if (doesBucketExist(bucketName))
            return mConfig.getOssClient().getBucketInfo(bucketName);
        return null;
    }

    /*****-上传文件-默认上传至配置文件指定空间*****/

    /**
     * 上传字符串
     *
     * @param key
     * @param content
     * @return
     */
    public static PutObjectResult upload(String key, String content) {
        try {
            if (doesBucketExist(mConfig.getBucketName()))
                return mConfig.getOssClient().putObject(mConfig.getBucketName(), key, new ByteArrayInputStream(content.getBytes()));
        } catch (Exception e) {
            logger.error("上传字符串失败", e);
        }
        return null;
    }

    /**
     * 上传byte数组
     *
     * @param key
     * @param content
     * @return
     */
    public static PutObjectResult upload(String key, byte[] content) {
        try {
            if (doesBucketExist(mConfig.getBucketName()))
                return mConfig.getOssClient().putObject(mConfig.getBucketName(), key, new ByteArrayInputStream(content));
        } catch (Exception e) {
            logger.error("上传byte数组失败", e);
        }
        return null;
    }

    /**
     * 上传网络流
     *
     * @param key
     * @param urlPath
     * @return
     */
    public static PutObjectResult uploadURL(String key, String urlPath) {
        InputStream is = null;
        try {
            is = new URL(urlPath).openStream();
            return mConfig.getOssClient().putObject(mConfig.getBucketName(), key, is);
        } catch (Exception e) {

        } finally {
            try {
                if (is != null)
                    is.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

    /**
     * 上传文件
     *
     * @param file
     * @param key
     * @return
     */
    public static PutObjectResult upload(File file, String key) {
        try {
            return mConfig.getOssClient().putObject(mConfig.getBucketName(), key, file);
        } catch (Exception e) {
            logger.error("上传失败", e);
        }
        return null;
    }

    /**
     * 获得url链接
     *
     * @param key
     * @return
     */
    public static String getUrl(String key) {
        // 设置URL过期时间为100年  3600l* 1000*24*365*100
        Date expiration = new Date(System.currentTimeMillis() + 3600L * 1000 * 24 * 365 * 100 * 100);
        // 生成URL
        URL url = mConfig.getOssClient().generatePresignedUrl(mConfig.getBucketName(), key, expiration);
        if (url != null) {
            return url.toString();
        }
        return null;
    }

    /**
     * 重新定义文件名,使用UUID保证不重复
     *
     * @param action
     * @param fileName
     * @return
     */
    public static String getKey(String action, String fileName) {
        return action + "/" + UUID.randomUUID().toString() + fileName.substring(fileName.lastIndexOf(".")).toLowerCase();
    }



    public static boolean deleteFile(String key) {
        try {
            mConfig.getOssClient().deleteObject(mConfig.getBucketName(), key);
            return true;
        } catch (Exception e) {

        }
        return false;
    }

    public static OSSClient getOssClient() {
        return mConfig.getOssClient();
    }

    public static AliOssConfig getmConfig() {
        return mConfig;
    }
}
import com.jfinal.plugin.IPlugin;

/**
 * author:zsq
 */
public class AliOssPlugin implements IPlugin {

    private String propFile = "alioss.properties";

    public AliOssPlugin() {
    }

    public AliOssPlugin(String propFile) {
        this.propFile = propFile;
    }

    @Override
    public boolean start() {
        AliOssKit.init(new AliOssConfig(propFile));
        return true;
    }

    @Override
    public boolean stop() {
        AliOssKit.destory();
        return true;
    }

}


评论区

JFinal

2019-01-13 11:40

感谢分享

热门分享

扫码入社