下载https图片并上传到aws s3文件服务器上
遇到的需求:
在网上爬到的https路径的图片上传到公司服务器上(买的亚马逊的图片服务器,类似于阿里云的oss服务器),以防以后不能使用.
重点代码:
new URL(url).openStream()
通过URL对象的openStream()方法得到指定资源的输入流。然后将流调用s3的api方法存入文件服务器 url直接写图片的地址即可
具体代码:
/**
* 获取亚马逊链接
*/
private static AmazonS3 getAmazonS3() {
if (s3Client == null) {
// 获取S3Client对象
AWSCredentials awsCredentials = new BasicAWSCredentials(AWS_ACCESS_KEY, AWS_SECRET_KEY);
AmazonS3ClientBuilder builder = AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(awsCredentials));
builder.setRegion(region);
s3Client = builder.build();
}
return s3Client;
}
/**
* TODO 上传聊天记录到s3服务器
*
* @param path 包括路径及文件名,路径开头不能带‘/’
*/
public static void uploadMsgRecord(String path, String url) {
if (s3Client == null) {
getAmazonS3();
}
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentType("jpg"); //type为设置上传图片的类型,jpg、png,如果不设置下载下来使用是会打不开
s3Client.putObject(new PutObjectRequest(AMZ_BUCKETNAME, path, new URL(url).openStream(), metadata)
.withCannedAcl(CannedAccessControlList.PublicRead));//key代表你上传的文件的唯一标识
System.out.println("66666666666666666666666上传的图片地址为"+path);
}
最后:
以上所有如有错误,望指点