压缩并上传图片到阿里云(jfinal)
/**
* 获取上传文件
*
* @param r
* @Return: com.oreilly.servlet.multipart.FilePart
*/
public static FilePart fileuploads(HttpServletRequest r) {
boolean flag = false;
MultipartParser mp;
try {
mp = new MultipartParser(r, 52428800, false, false, "UTF-8");
Part part = null;
while ((part = mp.readNextPart()) != null) {
String name = part.getName();
if (part.isFile()) {
FilePart filePart = (FilePart) part;
return filePart;
}
}
} catch (IOException e) {
e.printStackTrace();
return null;
}
return null;
}
/**
* 判断图片类型
*
* @param ImgType
* @Return: java.lang.String
*/
public static String judgeImgType(String ImgType) {
Map<String, String> imgMap = new HashMap<>();
imgMap.put("images", "gif,jpg,jpeg,png,bmp");
String imgType = "";
if (StringUtils.isNotBlank(ImgType)) {
if (Arrays.<String>asList(imgMap.get("imgaes").split(",")).contains(ImgType)) {
imgType = ImgType;
} else {
imgType = "false:文件格式错误";
}
}
return imgType;
}
/**
* 压缩图片(没有原图)
* 默认输出25%质量图片
*
* @param image
* @return
* @throws IOException
*/
public static InputStream compress(BufferedImage image, String readImageFormat) throws IOException {
InputStream in = ImageUtils.getInputStream(image, readImageFormat);
ByteArrayOutputStream os = new ByteArrayOutputStream();
Thumbnails.of(in).size(image.getWidth(), image.getHeight()).outputQuality(0.25f).toOutputStream(os);
InputStream is = new ByteArrayInputStream(os.toByteArray());
in.close();
os.close();
return is;
}
#阿里云oos
endPoint = oss-cn-beijing.aliyuncs.com
accessKeyId = LTAI9rV1x0TmtGjq
accessKeySecret = 3QCJw4MhlyZC8zQUATKaLxWZpk4bFY
bucketName = songsiraliyun
urlKey = images/
fileUrlKey = files/
public static String REQHEAD = PropKit.get("reqHead");
public static String ENDPOINT = PropKit.get("endPoint");
public static String ACCESSKEYID = PropKit.get("accessKeyId");
public static String ACCESSKEYSECRET = PropKit.get("accessKeySecret");
public static String BUCKETNAME = PropKit.get("bucketName");
public static String URLKEY = PropKit.get("urlKey");
public static String FILEURLKEY = PropKit.get("fileUrlKey");
/**
* 上传压缩图片到阿里云
*
* @Return: void
*/
public void uploadByAliYun() throws IOException {
FilePart fileUploads = HttpUtil.fileuploads(getRequest());
String trimFileName = fileUploads.getFileName().trim();
String subName = trimFileName.substring(0, trimFileName.lastIndexOf("."));
String fileType = trimFileName.substring(trimFileName.lastIndexOf("."));
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
String realName = "";
//修改文件名,如果相同就会被覆盖掉
realName = simpleDateFormat.format(new Date()) + "-" + RandCharsUtils.getRandomString(16) + fileType;
BufferedImage bufferedImage = ImageIO.read(fileUploads.getInputStream());
判断文件大小
if (bufferedImage.getWidth() * bufferedImage.getHeight() <= 104857600) {
String fileExt = fileUploads.getFileName().substring(fileUploads.getFileName().lastIndexOf(".") + 1).toLowerCase();
String judgeImgType = ImageUtils.judgeImgType(fileExt);
//判断文件类型
if (StringUtils.isNotBlank(judgeImgType) && !StringUtils.contains(judgeImgType, "false")) {
//开始压缩图片
InputStream compress = ImageUtils.compress(bufferedImage, judgeImgType);
//上传到阿里云
OSSClient ossClient = new OSSClient(REQHEAD + ENDPOINT, ACCESSKEYID, ACCESSKEYSECRET);
ossClient.putObject(BUCKETNAME, URLKEY + realName, compress);
ossClient.shutdown();
Record record = new Record();
record.set("url", REQHEAD + BUCKETNAME + '.' + ENDPOINT + '/' + URLKEY + realName);
renderJson(setResult(record));
} else {
Map<String, String> resMap = new HashMap<>(16);
resMap.put("code", "5000");
resMap.put("msg", "上传图片失败");
renderJson(setResult(resMap));
}
} else {
Map<String, String> resMap = new HashMap<>(16);
resMap.put("code", "5000");
resMap.put("msg", "上传" + subName + "图片过大");
renderJson(setResult(resMap));
}
} 参考文档:
https://blog.csdn.net/distinctive_MAN/article/details/83622757
https://blog.csdn.net/songsir001/article/details/86311137
https://help.aliyun.com/document_detail/84798.html?spm=a2c4g.11186623.6.798.65df39a5DivjqP
https://blog.csdn.net/leimenghongchen1/article/details/52949175
压缩并上传图片到阿里云(jfinal)的更多相关文章
- 上传图片到阿里云OSS和获取上传图片的外网url的步骤
啥都不说 直接上代码 1.html: <form action="/bcis/api/headImgUpload.json" method="post" ...
- swift3.0 从相册选取或者拍照上传图片至阿里云OSS
导入相应的库 import Photos import AliyunOSSiOS 选取照片需要继承 UIImagePickerControllerDelegate,UINavigationContro ...
- multipartUpload上传图片到阿里云
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- vue 上传图片到阿里云(前端直传:不推荐)
为何要这样做:减轻后端数据库压力(个人觉得于前端没啥用,谁返回来都行) 代码部分: <template> <div class="upLoad"> < ...
- Java中使用RestFul接口上传图片到阿里云OSS服务器
1.接口方法 import java.io.IOException; import javax.servlet.http.HttpServletRequest; import org.springfr ...
- vue中上传图片至阿里云oss
1.开通阿里云的oss服务这些这里就不多做介绍了 2.登入阿里云的后台管理系统创建一个Bucket 3.在后台管理系统中进入访问控制 4.点击用户管理->新建用户->填写相关信息,就生成了 ...
- 上传图片到阿里云oss
阿里云地址 登录阿里云管理控制台,创建对象存储oss private static final String endpoint = "http://oss-cn-shanghai.aliyu ...
- TP框架上传图片至阿里云oss
首先安装阿里云oss扩展: composer require aliyuncs/oss-sdk-php 如果这个安装不上可以直接下载SDK的包: 链接:https://pan.baidu.com/s/ ...
- PHP上传图片至阿里云
<?php header("Content-type: text/html; charset=utf-8"); header('Access-Control-Allow-Or ...
随机推荐
- LaTeX实时预览中文
参考资料:http://blog.sina.com.cn/s/blog_6ea58f530101aizw.html 功夫不负有心人,终于在经过艰苦卓绝的寻找之后,让我的Texpad实现了实时预览.此时 ...
- Zookeeper——分布式一致性协议及Zookeeper Leader选举原理
文章目录 一.引言 二.从ACID到CAP/BASE 三.分布式一致性协议 1. 2PC和3PC 2PC 发起事务请求 事务提交/回滚 3PC canCommit preCommit doCommit ...
- 5.kubernetes的服务暴露插件-Traefik
目录 1.部署traefik 2.准备资源配置清单 3.应用资源配置清单 4.检查创建资源 5.解析域名 6.配置反向代理 7.浏览器访问 部署traefik 在HDSS7-200.host.com上 ...
- Web前端兼容性指南
一.Web前端兼容性问题 一直以来,Web前端领域最大的问题就是兼容性问题,没有之一. 前端兼容性问题分三类: 浏览器兼容性 屏幕分辨率兼容性 跨平台兼容性 1.浏览器兼容性问题 第一次浏览器大战发生 ...
- robot framework使用小结(一)
项目组要用到robot framework验收web,因此花了两天时间了解了一下这个框架.我把网上各位大侠分享的内容整理成一个小小demo,参考的出处没有列出来,在此一并感谢各位. demo仍旧是打开 ...
- ceph luminous版本的安装部署
1. 前期准备 本次安装环境为: ceph1(集群命令分发管控,提供磁盘服务集群) CentOs7.5 10.160.20.28 ceph2(提供磁盘服务集群) CentOs7.5 10. ...
- Vue学习-组件的基本使用(局部组件)
目录 示例代码 1.创建组件(构造器对象创建-Vue.extend) 2.注册组件 3.使用组件 4.语法糖创建并注册组件 示例代码 http://jsrun.net/H8vKp/edit 1.创建组 ...
- app自动化测试环境配置:adb环境配置、monkey环境配置、appium环境配置大全
1. 安装jdk 2. 安装配置Andriod sdk 安装Andriod sdk前首先需要安装配置好jdk环境. 然后安装Android sdk 安装完成后需要配置环境变量:ANDROID_HOME ...
- JavaScript基础JavaScript的常用编码惯例(007)
采用一定的编码惯例,可以使得项目中的代码提到较高的一致性,可读性和可预测性. 1.缩进缩 进可以提高代码的可读性.不过错误的缩进也可能导致代码的误读.有人认为缩进应该使用tab,另外的一些人主张采用4 ...
- day08获取图片
wxml: <!--pages/publish/publish.wxml--> <text>pages/publish/publish.wxml</text> &l ...