|
|
|
@@ -13,6 +13,7 @@ import com.amazonaws.services.s3.model.CannedAccessControlList; |
|
|
|
import com.amazonaws.services.s3.model.ObjectMetadata; |
|
|
|
import com.amazonaws.services.s3.model.PutObjectRequest; |
|
|
|
import com.iformall.shiro.UserSession; |
|
|
|
import com.iformall.ueditor.define.BaseState; |
|
|
|
import com.iformall.ueditor.define.State; |
|
|
|
import org.apache.shiro.SecurityUtils; |
|
|
|
import org.slf4j.Logger; |
|
|
|
@@ -46,64 +47,70 @@ public class Uploader { |
|
|
|
state = Base64Uploader.save(this.request.getParameter(filedName), |
|
|
|
this.conf); |
|
|
|
} else { |
|
|
|
state = new BinaryUploader().save(this.request, this.conf); |
|
|
|
|
|
|
|
if (state.isSuccess()) { |
|
|
|
JSONObject stateJson = JSON.parseObject(state.toJSONString()); |
|
|
|
|
|
|
|
MultipartFile multiReq= ((MultipartHttpServletRequest) this.request).getFile("upfile"); |
|
|
|
String tenantId = (String) SecurityUtils.getSubject().getSession().getAttribute(UserSession.tenantId); |
|
|
|
|
|
|
|
ObjectMetadata metadata = new ObjectMetadata(); |
|
|
|
metadata.setContentType(multiReq.getContentType()); |
|
|
|
metadata.setContentLength(multiReq.getSize()); |
|
|
|
|
|
|
|
try { |
|
|
|
AmazonS3 s3 = AmazonS3ClientBuilder.standard() |
|
|
|
.withRegion(conf.get("clientRegion").toString()) |
|
|
|
.withCredentials(new AWSCredentialsProvider() { |
|
|
|
@Override |
|
|
|
public AWSCredentials getCredentials() { |
|
|
|
return new BasicAWSCredentials(conf.get("access").toString(), conf.get("secret").toString()); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void refresh() { |
|
|
|
|
|
|
|
} |
|
|
|
}) |
|
|
|
.build(); |
|
|
|
String fileName = UUID.randomUUID().toString(); |
|
|
|
int dot = multiReq.getOriginalFilename().lastIndexOf('.'); |
|
|
|
if (dot >= 0) { |
|
|
|
fileName = tenantId + "/" + fileName + multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); |
|
|
|
} else { |
|
|
|
fileName = tenantId + "/" + fileName; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
s3.putObject( |
|
|
|
new PutObjectRequest(conf.get("bucketName").toString(), fileName, multiReq.getInputStream(), metadata) |
|
|
|
.withCannedAcl(CannedAccessControlList.PublicRead)); |
|
|
|
URL url = s3.getUrl(conf.get("bucketName").toString(), fileName); |
|
|
|
logger.info(url.toString()); |
|
|
|
state.putInfo("url", url.toString()); |
|
|
|
} catch (AmazonServiceException ase) { |
|
|
|
MultipartFile multiReq= ((MultipartHttpServletRequest) this.request).getFile("upfile"); |
|
|
|
String tenantId = (String)SecurityUtils.getSubject().getSession().getAttribute(UserSession.tenantId); |
|
|
|
|
|
|
|
String fileName = UUID.randomUUID().toString(); |
|
|
|
int dot = multiReq.getOriginalFilename().lastIndexOf('.'); |
|
|
|
if (dot >= 0) { |
|
|
|
fileName = tenantId + "/" + fileName + multiReq.getOriginalFilename().substring(dot, multiReq.getOriginalFilename().length()); |
|
|
|
} else { |
|
|
|
fileName = tenantId + "/" + fileName; |
|
|
|
} |
|
|
|
|
|
|
|
state = state = new BaseState(true); |
|
|
|
state.putInfo("size", multiReq.getSize()); |
|
|
|
state.putInfo("title", filedName); |
|
|
|
|
|
|
|
JSONObject stateJson = JSON.parseObject(state.toJSONString()); |
|
|
|
|
|
|
|
ObjectMetadata metadata = new ObjectMetadata(); |
|
|
|
metadata.setContentType(multiReq.getContentType()); |
|
|
|
metadata.setContentLength(multiReq.getSize()); |
|
|
|
|
|
|
|
try { |
|
|
|
AmazonS3 s3 = AmazonS3ClientBuilder.standard() |
|
|
|
.withRegion(conf.get("clientRegion").toString()) |
|
|
|
.withCredentials(new AWSCredentialsProvider() { |
|
|
|
@Override |
|
|
|
public AWSCredentials getCredentials() { |
|
|
|
return new BasicAWSCredentials(conf.get("access").toString(), conf.get("secret").toString()); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void refresh() { |
|
|
|
|
|
|
|
} |
|
|
|
}) |
|
|
|
.build(); |
|
|
|
s3.putObject( |
|
|
|
new PutObjectRequest(conf.get("bucketName").toString(), fileName, multiReq.getInputStream(), metadata) |
|
|
|
.withCannedAcl(CannedAccessControlList.PublicRead)); |
|
|
|
URL url = s3.getUrl(conf.get("bucketName").toString(), fileName); |
|
|
|
//logger.info(url.toString()); |
|
|
|
state.putInfo("url", url.toString()); |
|
|
|
} catch (AmazonServiceException ase) { |
|
|
|
/* |
|
|
|
logger.warn("Caught an AmazonServiceException, which " + |
|
|
|
"means your request made it " + |
|
|
|
"to Amazon S3, but was rejected with an error response" + |
|
|
|
" for some reason."); |
|
|
|
logger.warn(ase.getMessage()); |
|
|
|
} catch (AmazonClientException ace) { |
|
|
|
*/ |
|
|
|
ase.printStackTrace(); |
|
|
|
} catch (AmazonClientException ace) { |
|
|
|
/* |
|
|
|
logger.warn("Caught an AmazonClientException, which " + |
|
|
|
"means the client encountered " + |
|
|
|
"an internal error while trying to " + |
|
|
|
"communicate with S3, " + |
|
|
|
"such as not being able to access the network."); |
|
|
|
logger.warn("Error Message: " + ace.getMessage()); |
|
|
|
} catch (IOException ioe) { |
|
|
|
logger.warn("Caught an IOException: " + ioe.getMessage()); |
|
|
|
} |
|
|
|
*/ |
|
|
|
ace.printStackTrace(); |
|
|
|
} catch (IOException ioe) { |
|
|
|
//logger.warn("Caught an IOException: " + ioe.getMessage()); |
|
|
|
ioe.printStackTrace(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|