最近在做一个移动端HTML5的应用,使用到了上传功能,起初使用传统的上传方式上传手机拍照的照片,由于手机拍照出来的照片一般都是好几MB,所以上传速度是非常慢的。

在网上找了很久找到了localResizeIMG压缩框架,感觉非常的实用,所以在此分享给大家。
第一步:下载localResizeIMG
localResizeIMG放在github中的,地址是:https://github.com/think2011/localResizeIMG。
第二步:在web工程中导入localResizeIMG相关js
解压localResizeIMG压缩吧,把目录中的dist文件夹拷贝到工程中,我的是放在js目录下。
然后在自己的js中导入jquery和localResizeIMG的js。如:
<script src="<c:url value="/js/JQuery/jquery-1.10.0.min.js"/>"></script> <script type="text/javascript" src="<c:url value="/js/lrz/dist/lrz.bundle.js"/>"></script>
第三步:在自己的上传的input的file框加入onchange事件如下代码
<input type="file" id="payfile" name="myfile" style="display:none;" onchange="fileChange(this)" />
在fileChange方法中实现代码的压缩和对压缩后生成的base64异步传到后台
function fileChange(that){
var filepath=$(that).val();
if(filepath=="")
{
return;
}
var extStart=filepath.lastIndexOf(".");
var ext=filepath.substring(extStart,filepath.length).toUpperCase();
if(".jpg|.png|.bmp|.jpeg".toUpperCase().indexOf(ext.toUpperCase())==-1){
alert("只允许上传jpg、png、bmp、jpeg格式的图片");
return false;
}
//以图片宽度为800进行压缩
lrz(that.files[0], {
width: 800
})
.then(function (rst) {
//压缩后异步上传
$.ajax({
url : "<%=request.getContextPath()%>/common/fileUploadPicture",
type: "POST",
data : {
imgdata:rst.base64//压缩后的base值
},
dataType:"json",
cache:false,
async:false,
success : function(data) {
if(data.success)
{
alert(data.message);///data.message为上传成功后的文件路径
}else{
alert(data.message);///data.message为上传失败原因
}
},
error : function(){
alert("上传失败");
}
});
});
}
第四步:spring mvc controller 后台接收base值并解析并保存文件
import sun.misc.BASE64Decoder;//导入的base64的类
/**
* 文件上传
*/
@ResponseBody
@RequestMapping("common/fileUploadPicture")
public Object fileUploadPicture(String imgdata, HttpServletRequest request) {
LOGGER.info("[文件上传(fileUploadPicture)][params:imgdata=" + imgdata + "]");
BASE64Decoder decoder = new BASE64Decoder();
try {
String basePath = request.getRealPath("/upload_files");
string imgPath=basePath+"/test.jpg";
// new一个文件对象用来保存图片,默认保存当前工程根目录
File imageFile = new File(imgPath);
// 创建输出流
FileOutputStream outputStream = new FileOutputStream(imageFile);
// 获得一个图片文件流,我这里是从flex中传过来的
byte[] result = decoder.decodeBuffer(imgdata.split(",")[1]);//解码
for (int i = 0; i < result.length; ++i) {
if (result[i] < 0) {// 调整异常数据
result[i] += 256;
}
}
outputStream.write(result);
return new Result(true, imgPath);
} catch (AppException e1) {
LOGGER.error("[文件上传(fileUpload)-fastdfs][errors:" + e1 + "]");
return new Result(false, "文件上传失败");
} catch (Exception e) {
LOGGER.error("[文件上传(fileUpload)][errors:" + e + "]");
return new Result(false, "文件上传失败");
}finally{
outputStream.flush();
outputStream.close();
}
}
Result类:
import java.io.Serializable;
public class Result implements Serializable{
private static final long serialVersionUID = 1L;
private boolean success;
private String message;
public Result() {
success = true;
}
public Result(boolean success, String message) {
this.success = success;
this.message = message;
}
public boolean isSuccess() {
return success;
}
public void setSuccess(boolean success) {
this.success = success;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
@Override
public String toString() {
return "Result [success=" + success + ", message=" + message + "]";
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# spring
# mvc
# localResizeIMG
# html5
# 上传
# SpringMVC+Ajax+拼接html字符串实例代码
# 详解如何配置springboot跳转html页面
# Spring Boot引入swagger-ui 后swagger-ui.html无法访问404的问题
# spring boot 2.x html中引用css和js失效问题及解决方法
# springboot如何使用thymeleaf模板访问html页面
# Springboot访问html页面的教程详解
# 详解SpringBoot+Thymeleaf 基于HTML5的现代模板引擎
# spring boot请求异常处理并返回对应的html页面
# Springmvc返回html页面问题如何解决
# 文件上传
# 自己的
# 放在
# 的是
# 都是
# 手机拍照
# 在此
# 很久
# 是从
# 给大家
# 找了
# 做一个
# 第二步
# 第三步
# 大家多多
# 只允许
# 第四步
# 并保存
# 中传
相关文章:
建站之星如何优化SEO以实现高效排名?
c++ stringstream用法详解_c++字符串与数字转换利器
c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】
山东云建站价格为何差异显著?
如何快速搭建个人网站并优化SEO?
linux top下的 minerd 木马清除方法
Python如何创建带属性的XML节点
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
高端云建站费用究竟需要多少预算?
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
C++时间戳转换成日期时间的步骤和示例代码
如何高效利用200m空间完成建站?
内网网站制作软件,内网的网站如何发布到外网?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
香港服务器WordPress建站指南:SEO优化与高效部署策略
企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?
如何在建站宝盒中设置产品搜索功能?
安云自助建站系统如何快速提升SEO排名?
网页设计网站制作软件,microsoft office哪个可以创建网页?
网站制作免费,什么网站能看正片电影?
制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?
Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递
新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?
如何通过主机屋免费建站教程十分钟搭建网站?
网站制作费用多少钱,一个网站的运营,需要哪些费用?
海南网站制作公司有哪些,海口网是哪家的?
武清网站制作公司,天津武清个人营业执照注销查询系统网站?
如何用已有域名快速搭建网站?
兔展官网 在线制作,怎样制作微信请帖?
如何通过VPS建站无需域名直接访问?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
如何零成本快速生成个人自助网站?
制作网站的过程怎么写,用凡科建站如何制作自己的网站?
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
建站之星如何实现五合一智能建站与营销推广?
如何用腾讯建站主机快速创建免费网站?
教学网站制作软件,学习*后期制作的网站有哪些?
高性价比服务器租赁——企业级配置与24小时运维服务
如何选择高性价比服务器搭建个人网站?
c# await 一个已经完成的Task会发生什么
专业公司网站制作公司,用什么语言做企业网站比较好?
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
微信小程序 五星评分(包括半颗星评分)实例代码
大连网站制作公司哪家好一点,大连买房网站哪个好?
建站之星如何通过成品分离优化网站效率?
c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】
香港服务器建站指南:免备案优势与SEO优化技巧全解析
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?
*请认真填写需求信息,我们会在24小时内与您取得联系。