紀錄最近在處理 AWS 相關 issue 時用的部分 method 最基本的 download、upload等等還滿好在 AWS 上找到範例 不過似乎有些要求就沒那麼好找 從AWS下載檔案的檔案名稱(alias name)或其他 Header 調整 AWS示範了建立供下載使用的連結的範例 public static URL getURLPresigned(String bucket, String s3name) { AmazonS3 s3client = new AmazonS3Client(new BasicAWSCredentials(accessKey, secretKey)); Date expire = new Date(new Date().getTime() + 86400000L); // set to be available for 1 day. return s3client.generatePresignedUrl(bucket, s3name, expire, HttpMethod.GET); } 但是會使用AWS的,絕大多數都是有大量檔案存取需求 應該有不少公司的做法也會是上傳的檔案會加上 hash 避免檔案被覆蓋或作為多版本紀錄用途 但是給使用者下載的檔案名稱還是要使用原先上傳時的才比較合理 一個可行的做法就是調整下載的回應的 Content-Disposition Header 這個 Header 可以用來設定下載的檔案名稱,規格的說明可以查看 定義文件 寫出來的範例如下: public static URL getURLPresigned(String bucket, String s3name, String contentDisposition) { AmazonS3 s3client = new AmazonS3Client(new BasicAWSCredentials(accessKey, secretKey)); Date expire = new Date(new Date().getTime() + 86400000L); // set to be available for 1 day. Respo