@Component
public class AwsConfig {
public static String AWS_S3_ACCESS_KEY ;
public static String AWS_S3_SECRET_KEY ;
public static String BUCKET_NAME ;
@Value( "${awsS3AccessKey} " )
public void setAwss3AccessKey( String awss3AccessKey) {
AwsConfig.AWS_S3_ACCESS_KEY = awss3AccessKey;
}
@Value( "${awsS3SecretKey} " )
public void setAwsS3SecretKey( String awsS3SecretKey) {
AwsConfig.AWS_S3_SECRET_KEY = awsS3SecretKey;
}
@Value( "${bucketName} " )
public void setBucketName( String bucketName) {
AwsConfig.BUCKET_NAME = bucketName;
}
}
public class AwsClient {
static Logger logger = LoggerFactory.getLogger( AwsClient.class) ;
static AmazonS3 s3;
static S3Object fullObject = null;
static {
ClientConfiguration config = new ClientConfiguration( ) ;
config.setConnectionTimeout( 10000) ;
config.setSocketTimeout( 300000) ;
Regions clientRegion = Regions.AP_SOUTHEAST_1;
BasicAWSCredentials awsCreds = new BasicAWSCredentials( AwsConfig.AWS_S3_ACCESS_KEY, AwsConfig.AWS_S3_SECRET_KEY) ;
s3 = AmazonS3ClientBuilder.standard( ) .withRegion( clientRegion)
.withCredentials( new AWSStaticCredentialsProvider( awsCreds)) .build( ) ;
}
/**
* @Title: uploadToS3
* @Description: S3url
* @param @param tempFile
* @param @param remoteFileName
* @param @return
* @param @throws IOException
* @return String
* @throws
*/
public static Map< String,String> uploadToS3( File file, String remoteFileName) throws IOException {
try {
// Upload a file as a new object with ContentType and title specified.
String objKey = "avatar/" +remoteFileName;
PutObjectRequest request = new PutObjectRequest( BUCKET_NAME,objKey ,file) ;
ObjectMetadata metadata = new ObjectMetadata( ) ;
// metadata.setContentType( "plain/text" ) ;
metadata.setContentType( "image/jpeg" ) ;
metadata.addUserMetadata( "title" , "someTitle" ) ;
request.setMetadata( metadata) ;
s3.putObject( request) ;
//get Accessible URL
GeneratePresignedUrlRequest urlRequest = new GeneratePresignedUrlRequest( BUCKET_NAME, objKey) ;
Date expirationDate = null;
try {
// DateUtils.get
expirationDate = new SimpleDateFormat( "yyyy-MM-dd" ) .parse( DateUtils.toStrDateOnlyYmd( DateUtils.addDays( new Date( ) ,7)) ) ;
} catch ( Exception e) {
e.printStackTrace( ) ;
}
//Expiration time setting
urlRequest.setExpiration( expirationDate) ;
URL url = s3.generatePresignedUrl( urlRequest) ;
Map< String,String> map = new HashMap< String,String> ( ) ;
map.put( "imgurl" ,url.toString( )) ;
map.put( "key" ,objKey) ;
return map;
} catch ( AmazonServiceException ase) {
ase.printStackTrace( ) ;
throw new BusinessException( UPLOAD_ERROR.toString( )) ;
}
}
/**
* @Title: getContentFromS3
* @Description: 2
* @param @param remoteFileName
* @param @throws IOException
* @return S3ObjectInputStream
* @throws
*/
public static S3ObjectInputStream getContentFromS3( String remoteFileName) throws IOException {
try {
GetObjectRequest request = new GetObjectRequest( BUCKET_NAME,remoteFileName) ;
S3Object object = s3.getObject( request) ;
S3ObjectInputStream inputStream = object.getObjectContent( ) ;
return inputStream;
} catch ( Exception e) {
e.printStackTrace( ) ;
}
return null;
}
/**
* @Title: downFromS3
* @Description:
* @param @param remoteFileName
* @param @param path
* @param @throws IOException
* @return void
* @throws
*/
public static void downFromS3( String remoteFileName,String path) throws IOException {
try {
GetObjectRequest request = new GetObjectRequest( BUCKET_NAME,remoteFileName) ;
s3.getObject( request,new File( path)) ;
} catch ( Exception e) {
e.printStackTrace( ) ;
}
}
/**
* @Title: getUrlFromS3
* @Description: url
* @param @param remoteFileName
* @param @return
* @param @throws IOException
* @return String
* @throws
*/
public static String getUrlFromS3( String remoteFileName) throws IOException {
try {
GeneratePresignedUrlRequest httpRequest= new GeneratePresignedUrlRequest( BUCKET_NAME, remoteFileName) ;
String url= s3.generatePresignedUrl( httpRequest) .toString( ) ; //
return url;
} catch ( Exception e) {
e.printStackTrace( ) ;
}
return null;
}
/**
* s3bucketNameBucket
* @param s3
* @param bucketName
* @return
*/
public static boolean checkBucketExists( AmazonS3 s3, String bucketName) {
List< Bucket> buckets = s3.listBuckets( ) ;
for ( Bucket bucket : buckets) {
if ( Objects.equals( bucket.getName( ) , bucketName)) {
return true ;
}
}
return false ;
}
public static void delFromS3( String remoteFileName) throws IOException {
try {
s3.deleteObject( BUCKET_NAME, remoteFileName) ;
} catch ( AmazonServiceException ase) {
ase.printStackTrace( ) ;
} catch ( AmazonClientException ace) {
ace.printStackTrace( ) ;
}
}
}
< dependency>
< groupId> com.amazonaws< /groupId>
< artifactId> aws-java-sdk< /artifactId>
< version> 1.10.26< /version>
< /dependency>