文件上传(input为file类型)
為什么80%的碼農都做不了架構師?>>> ??
?
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.2</version>
<configuration>
<compilerArguments>
<bootclasspath>${java.home}/lib/rt.jar;${java.home}/lib/jce.jar</bootclasspath>
</compilerArguments>
</configuration>
</plugin>
?
?
?
var files = $('#userImageUpload')[0].files;
files[0]
?
* Upload from request stream
*
*/
public static List<String> uploadS3File(Request req) throws Exception {
List<String> fileUrls = new ArrayList<String>();
setFileStoreAttr(req);
try {
Collection<Part> parts = getValidParts(req);
if (parts.size() > 0) {
for (Part part : parts) {
String path = storeFolderName + '/' + UUID.randomUUID();
ObjectMetadata meta = new ObjectMetadata();
meta.setContentType(part.getContentType());
InputStream in = part.getInputStream();
PutObjectRequest request;
if (part.getContentType().contentEquals("image")) {
request = new PutObjectRequest(s3BucketName,
path,
in,
meta);
} else {
request = new PutObjectRequest(s3BucketName,
path,
compressImageByWeithAndHeight(in, 0.5f,200,200),
meta);
}
?
request.withCannedAcl(CannedAccessControlList.PublicRead);
s3.putObject(request);
fileUrls.add(Helper.getS3FilePath(path));
}
}
} catch (Exception e) {
e.printStackTrace();
}
?
return fileUrls;
}
/**
* helper for file/image upload
*
* @param req
* @return
*/
private static Collection<Part> getValidParts(Request req) {
Collection<Part> parts = new ArrayList<Part>();
try {
for (Part part : req.raw().getParts()) {
ApplicationPart appPart = (ApplicationPart) part;
String fileName = appPart.getSubmittedFileName();
if (fileName != null && !fileName.isEmpty()) {
parts.add(part);
}
}
} catch (Exception e) {
e.printStackTrace();
}
?
return parts;
}
/**
* compress image by width , height , quantity
*
* @param input
* @param quantity
* @param width
* @param height
* @return
*/
private static InputStream compressImageByWeithAndHeight(InputStream input, float quantity,int width,int height) {
quantity = quantity == 0f ? 0.5f : quantity;
try {
ImageInputStream imageInput = ImageIO.createImageInputStream(input);
Image image = ImageIO.read(imageInput);
/** 寬,高設定 */
BufferedImage tag = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
tag.getGraphics().drawImage(image, 0, 0, width, height, null);
ByteArrayOutputStream out = new ByteArrayOutputStream();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam jep = JPEGCodec.getDefaultJPEGEncodeParam(tag);
/** 壓縮質量 */
jep.setQuality(quantity, true);
encoder.encode(tag, jep);
ByteArrayInputStream result = new ByteArrayInputStream(out.toByteArray());
out.close();
return result;
} catch (Exception e) {
e.printStackTrace();
}
?
return input;
}
}
?
/**
* Get file access url
*
* @param key
* @return
*/
public static String getS3FilePath(String key) {
return s3Domain + '/' + key;
}
轉載于:https://my.oschina.net/hycky/blog/1539284
總結
以上是生活随笔為你收集整理的文件上传(input为file类型)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 工具推荐:22款最流行的计算机取证工具【
- 下一篇: Java集合框架一览笔录