文件上传(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类型)相关推荐
- 电脑无法上传html文件类型,HTML5 - 限制文件上传(HTML5 - Restrict file upload)
HTML5 - 限制文件上传(HTML5 - Restrict file upload) 上面的代码也允许上传.txt或任何类型的文件. 如何限制 html5中的其他文件类型 ? Above code ...
- php文件上传css,CSS_文件上传input file简便美化方案(css),文件上传input在各个浏览器里 - phpStudy...
文件上传input file简便美化方案(css) 文件上传input在各个浏览器里表现形式都不一样: ie6 ie7,8,9 ff chrome 这里介绍一种简单实用的,在各种浏览器下表现一致的美化 ...
- html 美化input file,文件上传input file简便美化方案(css)
file,css 文件上传input在各个浏览器里表现形式都不一样: ie6 ie7,8,9 ff chrome 这里介绍一种简单实用的,在各种浏览器下表现一致的美化方法,效果如下: ie6无法美化, ...
- 文件上传input简便美化方案
文件上传input在各个浏览器里表现形式都不一样: ie6 ie7,8,9 ff chrome 这里介绍一种简单实用的,在各种浏览器下表现一致的美化方法,效果如下: ie6无法美化,只能应用部分效果, ...
- Android WebView 支持H5图片上传input type=file
2019独角兽企业重金招聘Python工程师标准>>> Android WebView 缓存处理 Android WebView 支持H5图片上传<input type=&qu ...
- 文件上传至将File转换成MultiPartFile
在文件上传业务上需要将文件上传至将File转换成MultiPartFile的时候,我搜索得到采用MockMultipartFile这个类可以轻松的转换. 但是,当我准备使用的时候,坑出现了.它是spr ...
- Laravel 文件上传提示 “The file deos not exits ” ,但确实已经上传了文件
Laravel 文件上传提示 "The file "" deos not exits " ,但确实已经上传了文件 首先使用代码抛出异常 if($file-> ...
- ORM中的事务和锁、Ajax异步请求和局部刷新、Ajax文件上传、日期时间类型的Json、多表查询图书系统
一.ORM中的事务和锁 事务 事务要确保原子性 """ 事务ACID原子性:不可分隔的最小单位一致性:跟原子性是相辅相成隔离性:事务之间相互不干扰持久性:事务一旦确认永久 ...
- 自学Python第二十二天- Django框架(三) AJAX、文件上传、POST 请求类型之间的转换、多APP开发、iframe、验证码、分页器、类视图、中间件、信号、日志、缓存、celery异步
Django官方文档 django 使用 AJAX django 项目中也可以使用 ajax 技术 前端 前端和其他 web 框架一样,需要注意的是,django 接收 POST 请求时,需要 csr ...
- jmeter文件上传压测file upload-数据为空-Connection terminated parsing multipart data
参考https://blog.csdn.net/u010390063/article/details/78329373 https://www.cnblogs.com/zichuan/p/101203 ...
最新文章
- kvm虚拟机vnc配置
- [原创]用递归写的一个object 转换成JSON的函数
- 第二、三章:信息系统项目管理基础与立项管理-章节真题
- iOS 快速实现分页界面的搭建
- 【渝粤教育】国家开放大学2018年秋季 1126t社会医学 参考试题
- 转:C++ map的基本操作和使用
- IOC容器-Autofac在MVC中实现json方式注入使用
- 【J2EE】在项目中理解J2EE规范
- Oracle密码过期问题,设置永不过期
- 线性代数 (二): 证明 A^T 乘以 A 为半正定矩阵
- Nginx服务器日常发包命令
- 求伴随矩阵和逆矩阵C++
- Docker 如何安全地进入到容器内部
- 【Unity3D实战】摇摆直升机开发实战(一)
- HDOJ/HDU 2551 竹青遍野(打表~)
- [案例4-4]学生和老师
- 编写Java程序,使用面向接口编程模拟不同动物的吼叫声
- OpenCV + CPP 系列(卅三)图像特征提取(Harris角点检测、Shi-Tomasi角点检测、自定义角点检测)
- 街景房屋号码 (SVHN) 数据集
- 网络安全级别划分为几个等级?网络安全入门
热门文章
- excel两个表格数据对比_Excel表格怎么防止看错数据?阅读模式了解一下
- html5场景编辑工具,3款容易上手的HTML5编辑工具推荐~
- 深度学习:神经网络基础知识总结
- 2022版全球及中国单晶硅市场规模分析与竞争策略研究报告
- 中国垃圾发电设备市场竞争模式与十四五运营前景研究报告2022版
- 地理标志农产品数据发布 特色产业对话农民丰收节交易会
- [Codeforces757G]Can Bash Save the Day?——动态点分治(可持久化点分树)
- python-全栈开发-前方高能-内置函数
- sharepoint 场帐号修改密码
- SLB vs CLB