压缩并上传图片到阿里云(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 ...
随机推荐
- Cookie 和 Session 关系详解
什么是 Cookie 和 Session ? 什么是 Cookie HTTP Cookie(也叫 Web Cookie或浏览器 Cookie)是服务器发送到用户浏览器并保存在本地的一小块数据,它会在 ...
- 状压DP 从TSP问题开始入门哦
一开始学状压DP难以理解,后来从TSP开始,终于入门了nice!!!! 旅行商问题 : 给定n个城市和两两相互的距离 ,求一条路径经过所有城市,并且路径达到最下仅限于; 朴树想法: 做n个城 ...
- 使用java类的方式配置spring 需要什么注解?
1.@Configuration 修饰类,声明当前类是一个配置类,相当于applicationContext.xml文件 2.@ComponentScan 用于指定spring在初始化容器时要扫描的包 ...
- webpack4.*入门笔记
全是跟着示例做的.看下面文章 入门 1.nodejs基础 http://www.runoob.com/nodejs/nodejs-tutorial.html 2.NPM 学习笔记整理 https:// ...
- 超简单集成HMS Scan Kit扫码SDK,轻松实现扫码购
前言 在前面的文章中,我们向大家介绍了HMS Scan Kit 的快速集成方法以及HMS Scan Kit和其他开源扫码工具的竞争力对比分析,如果没有看到也没关系,文章下方的往期链接中有文章入口. ...
- Python之浅谈多态和封装
目录 组合 什么是组合 为什么使用组合 多态和多态性 多态 什么是多态? 多态性 好处 多态性 什么是多态性 封装 封装是什么意思? 隐藏 如何用代码实现隐藏 python 实际上是可以访问隐藏属性的 ...
- 题解 P5937 【[CEOI1999]Parity Game】
这道题有两种做法,一种是 扩展域(种类并查集),一种是 边带权(带权并查集).种类并查集貌似应该都比带权并查集简单,所以先讲种类并查集的做法,再讲带权并查集 种类并查集 若 sum[ l ~ r ] ...
- pycharm远程连接vagrant虚拟机中mariadb数据库
1.虚拟机数据库设置--重启数据库 (1)vi /etc/my.cnf bind = 0.0.0.0 (2).远程不能用root用户连,得新建用户 select host,user from mysq ...
- mac安装Hadoop,mysql,hive,sqoop教程
在安装Hadoop,mysql,hive之前,首先要保证电脑上安装了jdk 一.配置jdk 1. 下载jdk http://www.oracle.com/technetwork/java/javase ...
- 化繁就简,如何利用Spring AOP快速实现系统日志
1.引言 有关Spring AOP的概念就不细讲了,网上这样的文章一大堆,要讲我也不会比别人讲得更好,所以就不啰嗦了. 为什么要用Spring AOP呢?少写代码.专注自身业务逻辑实现(关注本身的业务 ...