阿里雲oss上傳與下載
阿新 • • 發佈:2018-12-25
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(); } } }