1、需要包的Maven依赖
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-s3</artifactId>
<version>1.10.61</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-core</artifactId>
<version>1.10.61</version>
</dependency>
<dependency>
<groupId>xerces</groupId>
<artifactId>xerces</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.1</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.4</version>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.9.1</version>
</dependency>
2、获取s3连接
// String accessKey = "××××××××";
// String secretKey = "××××××××";
AWSCredentialsProvider credentials = new ClasspathPropertiesFileCredentialsProvider(
"AwsCredentials.properties");
ClientConfiguration configuration = new ClientConfiguration();
/**配置代理连接**/
/*
configuration.setProxyHost("172.26.100.238");
configuration.setProxyPort(64000);
configuration.setProxyUsername("××");
configuration.setProxyPassword("××");
*/
configuration.setProtocol(Protocol.HTTP);
AmazonS3 conn = new AmazonS3Client(credentials, configuration);
4、自己写的AmazonS3Service
package com.sanminasci.owi.amazons3.impl;
import java.io.File;
import java.net.URL;
import com.amazonaws.ClientConfiguration;
import com.amazonaws.Protocol;
import com.amazonaws.auth.AWSCredentialsProvider;
import com.amazonaws.auth.ClasspathPropertiesFileCredentialsProvider;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest;
import com.amazonaws.services.s3.model.ListObjectsRequest;
import com.amazonaws.services.s3.model.ObjectListing;
import com.amazonaws.services.s3.model.S3ObjectSummary;
import com.sanminasci.owi.amazons3.AmazonS3Service;
import com.sanminasci.owi.util.DateUtil;
/**
*
* @author mercy_yang
*
*/
public class AmazonS3ServiceImpl implements AmazonS3Service {
private static final String BUCKETNAME = "××";
private static final String PRIFIX = "××";
/**
* This method is get AmazonS3 connection
*
* @return AmazonS3
*/
protected static AmazonS3 getS3Conn() {
AWSCredentialsProvider credentials = new ClasspathPropertiesFileCredentialsProvider(
"AwsCredentials.properties");
ClientConfiguration configuration = new ClientConfiguration();
// configuration.setProxyHost("172.26.100.190");
// configuration.setProxyPort(3128);
configuration.setProxyHost("172.26.100.238");
configuration.setProxyPort(64000);
configuration.setProxyUsername("××");
configuration.setProxyPassword("××");
configuration.setProtocol(Protocol.HTTP);
AmazonS3 s3 = new AmazonS3Client(credentials, configuration);
return s3;
}
/**
* This method is upload Local File to AmazonS3 And Generate URL
*
* @return URL
*/
@Override
public String uploadLocalFile2S3GetUrl(File file, String plantCode) {
// Get AmazonS3 Connect
AmazonS3 s3 = getS3Conn();
// Upload File to S3
s3.putObject(BUCKETNAME, PRIFIX + plantCode + DateUtil.generateDateFolder() + file.getName(), file);
// Generate URL
GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(BUCKETNAME,
PRIFIX + plantCode + DateUtil.generateDateFolder() + file.getName());
URL url = s3.generatePresignedUrl(request);
return url.toString();
}
@Override
public boolean deleteFile(String fileName, String plantCode) {
return false;
}
@Override
public String updateExistFile(String fileName, String plantCode, File file) {
AmazonS3 s3 = getS3Conn();
String exits = null;
String fileNames[] = null;
String filePath = null;
ListObjectsRequest request = new ListObjectsRequest(BUCKETNAME, PRIFIX + plantCode, "", "", 10000);
ObjectListing objects = s3.listObjects(request);
do {
for (S3ObjectSummary summary : objects.getObjectSummaries()) {
filePath = summary.getKey();
if (!(filePath.equals("") || filePath == null)) {
fileNames = filePath.split("/");
if (fileName.equals(fileNames[fileNames.length - 1])) {
exits = filePath;
}
}
}
} while (objects.isTruncated());
System.out.println(exits);
if (exits != null) {
s3.deleteObject(BUCKETNAME, exits);
s3.putObject(BUCKETNAME, PRIFIX + plantCode + DateUtil.generateDateFolder() + file.getName(), file);
GeneratePresignedUrlRequest urlRequest = new GeneratePresignedUrlRequest(BUCKETNAME,
PRIFIX + plantCode + DateUtil.generateDateFolder() + file.getName());
URL url = s3.generatePresignedUrl(urlRequest);
return url.toString();
} else {
return null;
}
}
@Override
public boolean isFileExist(String fileName, String plantCode) {
boolean flag = false;
String fileNames[] = null;
String filePath = null;
AmazonS3 s3 = getS3Conn();
ListObjectsRequest request = new ListObjectsRequest(BUCKETNAME, PRIFIX + plantCode, "", "", 10000);
ObjectListing objects = s3.listObjects(request);
do {
for (S3ObjectSummary summary : objects.getObjectSummaries()) {
filePath = summary.getKey();
if (!(filePath.equals("") || filePath == null)) {
fileNames = filePath.split("/");
if (fileName.equals(fileNames[fileNames.length - 1])) {
flag = true;
}
}
}
} while (objects.isTruncated());
return flag;
}
@Override
public String generateUrl(String plantCode,String fileName) {
String fileNames[] = null;
String filePath = null;
GeneratePresignedUrlRequest urlRequest = null;
AmazonS3 s3 = getS3Conn();
ListObjectsRequest request = new ListObjectsRequest(BUCKETNAME, PRIFIX + plantCode, "", "", 10000);
ObjectListing objects = s3.listObjects(request);
do {
for (S3ObjectSummary summary : objects.getObjectSummaries()) {
filePath = summary.getKey();
if (!(filePath.equals("") || filePath == null)) {
fileNames = filePath.split("/");
if (fileName.equals(fileNames[fileNames.length - 1])) {
urlRequest = new GeneratePresignedUrlRequest(BUCKETNAME,filePath);
}
}
}
} while (objects.isTruncated());
URL url = s3.generatePresignedUrl(urlRequest);
return url.toString();
}
public static void main(String[] args) {
AmazonS3Service service = new AmazonS3ServiceImpl();
// if (service.isFileExist("hellopdf.pdf", "E81")) {
// String url = service.uploadLocalFile2S3GetUrl(new
// File("/home/mercy/3.pdf"), "E81");
// System.out.println(url);
// }
//
// System.out.println(service.isFileExist("hellopdf.pdf", "E81"));
// service.updateExistFile("hellopdf.pdf", "E81", new File(""));
String url =service.generateUrl("E81", "ubuntu.pdf");
System.out.println(url);
}
}