阿里云oss上传与下载

public class OSSClientUtil {

    //填入相应字符串
    private static String endpoint = "";
    private static String accessKeyId = "";
    private static String accessKeySecret = "";
    private static String bucketName = "";

    public static String getEndpoint() {
        return endpoint;
    }

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

    public static String getAccessKeyId() {
        return accessKeyId;
    }

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

    public static String getAccessKeySecret() {
        return accessKeySecret;
    }

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

    public static String getBucketName() {
        return bucketName;
    }

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

import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.*;
import org.apache.commons.io.FileUtils;
import org.springframework.web.multipart.MultipartFile;

import java.io.*;
import java.util.List;
import java.util.Objects;

public class FileLoadUtil {
    public static void upLoadFileToALiyun(String myKey, File file) throws IOException {
//multipartfile转file
//        File file = null;
//        if(multipartFile.equals("")||multipartFile.getSize()<=0){
//            multipartFile = null;
//        }else{
//            InputStream ins = multipartFile.getInputStream();
//            file = new File(Objects.requireNonNull(multipartFile.getOriginalFilename()));
//            inputStreamToFile(ins, file);
//        }

        // 创建OSSClient实例
        OSSClient ossClient = new OSSClient(OSSClientUtil.getEndpoint(), OSSClientUtil.getAccessKeyId(), OSSClientUtil.getAccessKeySecret());
        // 创建上传Object的Metadata
        ObjectMetadata meta = new ObjectMetadata();
        // 设置上传内容类型docx
        //meta.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
        meta.setContentType("text/xml");
        // 设置上传文件长度
        assert file != null;
        meta.setContentLength(file.length());
        // 上传文件
        try {
            PutObjectResult m_Result = ossClient.putObject(OSSClientUtil.getBucketName(), myKey, file, meta);
            System.out.println(m_Result.getETag());
        } catch (OSSException oe) {
            oe.printStackTrace();
            throw new OSSException();
        } catch (ClientException ce) {
            ce.printStackTrace();
            throw new ClientException();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            ossClient.shutdown();// 关闭client
            File del = new File(file.toURI());
            del.delete();
        }
    }
    /**
     * 文件下载
     *
     * @param myKey
     * @param tempFileName 要下载的文件名
     * @throws Exception
     */
    public static void downloadFileFromALiyun(String myKey, String tempFileName) throws Exception {
        // 创建OSSClient实例
        OSSClient ossClient = new OSSClient(OSSClientUtil.getEndpoint(), OSSClientUtil.getAccessKeyId(), OSSClientUtil.getAccessKeySecret());
        InputStream inputStream = null;
        // 下载object到文件
        try {
            OSSObject ossObject = ossClient.getObject(new GetObjectRequest(OSSClientUtil.getBucketName(), myKey));
            inputStream = ossObject.getObjectContent();
            String newStr = new String(tempFileName.getBytes(), "UTF-8");
            File f = new File(newStr);
            FileUtils.copyInputStreamToFile(inputStream, f);
        } catch (OSSException oe) {
            oe.printStackTrace();
            throw new Exception(oe.getErrorMessage());
        } catch (ClientException ce) {
            ce.printStackTrace();
            throw new Exception(ce.getErrorMessage());
        } catch (Exception e) {
            e.printStackTrace();
            throw new Exception(e.getMessage());
        } finally {
            ossClient.shutdown();// 关闭client
            inputStream.close();
        }
    }

    public static void queryObject() {
        // 创建OSSClient实例
        OSSClient ossClient = new OSSClient(OSSClientUtil.getEndpoint(), OSSClientUtil.getAccessKeyId(), OSSClientUtil.getAccessKeySecret());
        try {
            // 要查找的文件
            ObjectListing objectListing = ossClient.listObjects(OSSClientUtil.getBucketName(), "yourObjectKey/");
            List<OSSObjectSummary> objectSummary = objectListing.getObjectSummaries();
            System.out.println("您有以下Object:");
            for (OSSObjectSummary object : objectSummary) {
                System.out.println("\t" + object.getKey());
            }
        } catch (Exception ce) {
            ce.printStackTrace();
        } finally {
            ossClient.shutdown();// 关闭client
        }
    }

    public static void deleteSingleObect(String myKey) {
        //创建OSSClient实例
        OSSClient ossClient = new OSSClient(OSSClientUtil.getEndpoint(), OSSClientUtil.getAccessKeyId(), OSSClientUtil.getAccessKeySecret());
        try {
            ossClient.deleteObject(OSSClientUtil.getBucketName(), myKey);
        } catch (Exception ce) {
            ce.printStackTrace();
        } finally {
            ossClient.shutdown();// 关闭client
        }
    }

    public static void deleteBatchObect(List<String> keys) {
        // 删除Object。详细请参看“SDK手册 > Java-SDK > 管理文件”。
        OSSClient ossClient = new OSSClient(OSSClientUtil.getEndpoint(), OSSClientUtil.getAccessKeyId(), OSSClientUtil.getAccessKeySecret());
        try {
            // 删除Objects
            DeleteObjectsResult deleteObjectsResult = ossClient.deleteObjects(new DeleteObjectsRequest(OSSClientUtil.getBucketName()).withKeys(keys));
            List<String> deletedObjects = deleteObjectsResult.getDeletedObjects();
        } catch (Exception ce) {
            ce.printStackTrace();
        } finally {
            ossClient.shutdown();// 关闭client
        }
    }

    public static boolean doesObjectExist(String myKey) {
        OSSClient ossClient = new OSSClient(OSSClientUtil.getEndpoint(), OSSClientUtil.getAccessKeyId(), OSSClientUtil.getAccessKeySecret());
        boolean found = false;
        try {
            found = ossClient.doesObjectExist(OSSClientUtil.getBucketName(), myKey);
        } catch (Exception ce) {
            ce.printStackTrace();
        } finally {
            ossClient.shutdown();// 关闭client
        }
        return found;
    }

    public static void inputStreamToFile(InputStream ins,File file) {
        try {
            OutputStream os = new FileOutputStream(file);
            int bytesRead;
            byte[] buffer = new byte[8192];
            while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
                os.write(buffer, 0, bytesRead);
            }
            os.close();
            ins.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_37684824/article/details/84996696