java使用阿里云oss上传文件测试案例+上传策略包装类
生活随笔
收集整理的這篇文章主要介紹了
java使用阿里云oss上传文件测试案例+上传策略包装类
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
產品文檔地址:
https://help.aliyun.com/product/31815.html
產品購買地址:
https://www.aliyun.com/search?scene=all&k=oss
在官網首先購買產品,開通oss服務后進入控制臺:
在https://developer.aliyun.com/ask/2061
查看相關的endpoint地址(找到自己所在的區域)
在控制臺
https://oss.console.aliyun.com/overview
查找accesskey入口:
獲得自己的accessKeyId和accessKeySecret
在控制臺點擊新建bucket,自己定義名字
進入自己項目導入依賴:
<dependency><groupId >com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>2.8.2</version></dependency><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>3.2.8</version></dependency><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-dysmsapi</artifactId><version>1.1.0</version></dependency>新建一個單元測試:
private String endpoint ="https://oss-cn-beijing.aliyuncs.com";//(寫自己endpoint對應的地址)private String accessKeyId="...";private String secretAccessKey="...";private String bucketName="...";@Testpublic void uploadByOss() throws FileNotFoundException {OSSClient ossClient = new OSSClient(endpoint,accessKeyId, secretAccessKey);InputStream inputStream = new FileInputStream("C:\\Users\\14172\\Pictures\\0.png"); //上傳圖片,第一個參數為bucketName,第二個參數key為上傳的文件路徑名稱,第三個為InputStreamossClient.putObject(bucketName ,"upload/" +"aa.jpg", inputStream);Date expiration = new Date(new Date().getTime() + 3600l * 1000 * 24 * 365 * 10); // 生成URL,第一個參數為bucketName,第二個參數key為上傳的文件路徑名稱,第三個為過期時間URL url = ossClient.generatePresignedUrl(bucketName ,"upload/"+"aa.jpg" , expiration);System.out.println(url);}點擊運行后可以看到文件管理中多了一個文件夾,下面有自己上傳的文件:
在程序運行后得到的url點擊后會跳轉到網頁自動下載:
點擊后可以看到自己剛剛上傳的文件
也可以用一個類將oss上傳包裝起來:
@Service public class OssUploadStrategyImpl extends AbstractUploadStrategyImpl {@Autowiredprivate OssConfigProperties ossConfigProperties;@Overridepublic Boolean exists(String filePath) {return getOssClient().doesObjectExist(ossConfigProperties.getBucketName(), filePath);}@Overridepublic void upload(String path, String fileName, InputStream inputStream) {getOssClient().putObject(ossConfigProperties.getBucketName(), path + fileName, inputStream);}@Overridepublic String getFileAccessUrl(String filePath) {return ossConfigProperties.getUrl() + filePath;}/*** 獲取ossClient** @return {@link OSS} ossClient*/private OSS getOssClient() {return new OSSClientBuilder().build(ossConfigProperties.getEndpoint(), ossConfigProperties.getAccessKeyId(), ossConfigProperties.getAccessKeySecret());}}在yml文件中寫oss配置:
upload:mode: ossoss:url: https://OSS域名/endpoint: oss-cn-beijing-.aliyuncs.comaccessKeyId: ..accessKeySecret: ..bucketName: ..獲得配置文件的值:
@Data @Configuration @ConfigurationProperties(prefix = "upload.oss") public class OssConfigProperties {/*** oss域名*/private String url;private String endpoint;/*** 訪問密鑰id*/private String accessKeyId;/*** 訪問密鑰密碼*/private String accessKeySecret;private String bucketName;}上傳策略抽象類:
@Service public abstract class AbstractUploadStrategyImpl {@Overridepublic String uploadFile(MultipartFile file, String path) {try {// 獲取文件md5值String md5 = FileUtils.getMd5(file.getInputStream());// 獲取文件擴展名String extName = FileUtils.getExtName(file.getOriginalFilename());// 重新生成文件名String fileName = md5 + extName;// 判斷文件是否已經上傳if (!exists(path + fileName)) {upload(path, fileName, file.getInputStream());}return getFileAccessUrl(path + fileName);} catch (Exception e) {e.printStackTrace();throw new BizException("文件上傳失敗");}}public abstract Boolean exists(String filePath); }總結
以上是生活随笔為你收集整理的java使用阿里云oss上传文件测试案例+上传策略包装类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu使用rabbitmq的一些基
- 下一篇: springframework包下的Re