亚马逊服务器(AWS)个人账号可以免费使用12个月,可以在上面创建自己的服务器,虽然免费的服务器性能不是很好,但是个人使用就足够了。
搭建亚马逊的s3作为自己的图片或视频存储服务器。
1.申请创建AWS账号流程就不说了,选择创建S3桶作为存储自己的图片或视频的一个容器。
2.java实现上传文件到s3桶并且返回可以访问的url地址(如果是国际桶可能需要翻墙访问)
废话不多说,直接上代码。
import java.io.File;
import java.io.IOException;
import java.net.URL;
import com.amazonaws.AmazonClientException;
import com.amazonaws.AmazonServiceException;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.regions.Region;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.CannedAccessControlList;
import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest;
import com.amazonaws.services.s3.model.PutObjectRequest;
public class UploadTest {
static AmazonS3 s3;
static String AWS_ACCESS_KEY = "AKIAJF5HEUQ37WEDDNIA"; // 【你的 access_key】
static String AWS_SECRET_KEY = "MQvT6p4iGSeKkKAlU52ColYczs/zjV8Zdr+taG0u"; // 【你的 aws_secret_key】
String bucketName = "fallchat"; // 【你 bucket 的名字】 # 首先需要保证 s3 上已经存在该存储桶
static {
s3 = new AmazonS3Client(new BasicAWSCredentials(AWS_ACCESS_KEY, AWS_SECRET_KEY));
s3.setRegion(Region.getRegion(Regions.AP_NORTHEAST_1)); // 此处根据自己的 s3 地区位置改变
}
public String uploadToS3(File tempFile, String remoteFileName) throws IOException {
try {
// String bucketPath = bucketName + "/upload" ;
String bucketPath = bucketName;
s3.putObject(new PutObjectRequest(bucketPath, remoteFileName, tempFile)
.withCannedAcl(CannedAccessControlList.PublicRead));
GeneratePresignedUrlRequest urlRequest = new GeneratePresignedUrlRequest(bucketName, remoteFileName);
URL url = s3.generatePresignedUrl(urlRequest);
return url.toString();
} catch (AmazonServiceException ase) {
ase.printStackTrace();
} catch (AmazonClientException ace) {
ace.printStackTrace();
}
return null;
}
public static void main(String[] args) throws IOException {
UploadTest upload=new UploadTest();
File uploadFile = new File("D:\\file\\11\\videos\\6.mp4");
String uploadKey = "6";
String result=upload.uploadToS3(uploadFile,uploadKey);
System.out.println(result);
}
@Test
public void test(){
File uploadFile = new File("c:/test.txt");
String uploadKey = "test";
uploadToS3(uploadFile,uploadKey);
}
}