java上传文件到oss

package com.aliyunoss.utils;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.OSSErrorCode;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.ServiceException;
import com.aliyun.oss.model.CannedAccessControlList;
import com.aliyun.oss.model.GetObjectRequest;
import com.aliyun.oss.model.OSSObjectSummary;
import com.aliyun.oss.model.ObjectListing;
import com.aliyun.oss.model.ObjectMetadata;

public class AliOssUtil {
	private static final String ACCESS_ID = "";//换为自己的
	private static final String ACCESS_KEY = "";//换为自己的
	private static final String BUCKETNAME = "";//换为自己的
	private static final String ENDPOINT = "";//换为自己的
	// 创建Bucket.
    public static void ensureBucket(OSSClient client, String bucketName)
            throws OSSException, ClientException{
        try {
            // 创建bucket
            client.createBucket(bucketName);
        } catch (ServiceException e) {
            if (!OSSErrorCode.BUCKET_ALREADY_EXISTS.equals(e.getErrorCode())) {
                // 如果Bucket已经存在,则忽略
                throw e;
            }
        }
    }

    // 删除一个Bucket和其中的Objects 
    public static void deleteBucket(OSSClient client, String bucketName)
            throws OSSException, ClientException {

        ObjectListing ObjectListing = client.listObjects(bucketName);
        List<OSSObjectSummary> listDeletes = ObjectListing
                .getObjectSummaries();
        for (int i = 0; i < listDeletes.size(); i++) {
            String objectName = listDeletes.get(i).getKey();
            // 如果不为空,先删除bucket下的文件
            client.deleteObject(bucketName, objectName);
        }
        client.deleteBucket(bucketName);
    }

    // 把Bucket设置为所有人可读
    public static void setBucketPublicReadable(OSSClient client, String bucketName)
            throws OSSException, ClientException {
        //创建bucket
        client.createBucket(bucketName);

        //设置bucket的访问权限,public-read-write权限
        client.setBucketAcl(bucketName, CannedAccessControlList.PublicReadWrite);
    }

    /**
     * // 上传文件
     * @param client
     * @param bucketName
     * @param key
     * @param filename
     * @throws OSSException
     * @throws ClientException
     * @throws FileNotFoundException
     */
    private static void uploadFile(OSSClient client, String bucketName, String filename,String key)
            throws OSSException, ClientException, FileNotFoundException {
    	key = key.replace("\\", "/");
        File file = new File(filename);

        ObjectMetadata objectMeta = new ObjectMetadata();
        objectMeta.setContentLength(file.length());

        InputStream input = new FileInputStream(file);
        client.putObject(bucketName, key, input, objectMeta);
    }
    
    /**
     * TODO 同步到oss上
     * @param filePath文件本地路径
     * @param key oss上文件绝对路径
     */
    public static void uploadFile(String filePath,String key){
    	OSSClient client = new OSSClient(ENDPOINT, ACCESS_ID, ACCESS_KEY);
		try {
			String tmp = key;
			if (key.substring(0, 1).equals("/")) {
				tmp = key.substring(1, key.length());
			}
			AliOssUtil.uploadFile(client, BUCKETNAME, filePath, tmp);
		} catch (Exception e) {
			e.printStackTrace();
		}
    }
    // 下载文件
    public static void downloadFile(OSSClient client, String bucketName, String key, String filename)
            throws OSSException, ClientException {
        client.getObject(new GetObjectRequest(bucketName, key),
                new File(filename));
    }
    
    /**
    * TODO 根据文件名生成带有日期的文件相对路径
    * @param fileName
    * @return
    * @throws 
    */
    public static String getFileDatePath(String fileName) {
    	SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");
        String fileStr = sf.format(new Date());
        fileName = String.format("qr-%s.png", fileName);
        String tempPath = String.join("/", fileStr.substring(0, 4), fileStr.substring(4, 6),
        		fileStr.substring(6, 8), fileStr.substring(8, 10), fileName);
        return tempPath;
    }
    
   
    
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值