MUI的上传图片目前知道有两种方式,一种见前面文章中关于图片裁切时使用的base64作为字符串上传,另外一种则是本篇章中所使用的plus.uploader方式,它是一种真正意义上的文件上传,我们可以使用commons- fileupload组件来实现一个文件上传的后台,使用plus.uploader选择相册图片进行提交上传,详细如下文。

本文章实现的特点:

(1)、基于Java的服务端文件上传,可同时上传多个文件,支出文件进度信息(第几个文件,百分比)等;

(2)、MUI实现的文件上传前端,同时支持Android和IOS不同平台;

(3)、可以选择上传原图或压缩大小的图片,同样支持不同平台;

(4)、一些其他MUI的API,如:alert、ajax、gallery等;

服务端代码参考为:

@Override

protected voiddoGet(HttpServletRequest request,

HttpServletResponse response)throwsServletException, IOException {

log.info("######"+ CommonUtils.getClientIpAddress(request) +"访问文件上传######");

/*response.setHeader("Access-Control-Allow-Credentials", "false");

response.setHeader("Access-Control-Allow-Origin", "*");

response.setHeader("Access-Control-Allow-Methods", "*");

response.setHeader("Access-Control-Allow-Headers", "x-requested-with,content-type");*/

booleanisMultipart = ServletFileUpload.isMultipartContent(request);

if(!isMultipart) {

log.info("######不是文件上传的二进制表单提交######");

outputJSON(response,this.resultUpload(EnumResult.ERROR.getKey() ,"不是文件上传的二进制表单提交",null));

return;

}

DiskFileItemFactory factory =newDiskFileItemFactory();

ServletContext servletContext =this.getServletConfig().getServletContext();

File repository = (File) servletContext.getAttribute("javax.servlet.context.tempdir");

factory.setRepository(repository);

ServletFileUpload upload =newServletFileUpload(factory);

upload.setHeaderEncoding("utf-8");//上传文件乱码

upload.setSizeMax(1024*1024*50);//最大允许上传50M

//定义图片集合

List fileList =newArrayList();

List resultList = uploadFile(request, upload , fileList);

if(CollectionUtils.isNotEmpty(resultList)){

StringBuilder builder =newStringBuilder();//上传失败

for(String text : resultList) {

builder.append(text).append('\n');

}

System.out.println(builder.toString());

CommonUtils.outputJSON(response, builder.toString());

}

//文件上传成功

outputJSON(response,this.resultUpload(EnumResult.SUCCESS.getKey() ,"上传成功!", fileList));

log.info("######文件上传处理完毕######");

}

private voidoutputJSON(HttpServletResponse response, Map resultUpload) {

String result = JSONObject.toJSONString(resultUpload);

System.out.println(result);

CommonUtils.outputJSON(response, result);

}

privateList uploadFile(HttpServletRequest request, ServletFileUpload upload , List fileList) {

List fileLists;

String imageServer = PropertiesUtils.getInstance().getProperty(EnumProperties.APPLICATION,"system.fileupload.information");

File imageFolder =newFile(imageServer + File.separator+"appUpload"+ File.separator+ DateUtil.getFormatDate());

if(! imageFolder.exists()){

imageFolder.mkdirs();

}

List resultList =newArrayList();

try{

upload.setProgressListener(newUploadProgressListener());

fileLists = upload.parseRequest(request);

Iterator iter = fileLists.iterator();

intindex = 1;

longrandomName = System.currentTimeMillis();

while(iter.hasNext()) {

FileItem item = iter.next();

if(item.isFormField()){

continue;//不处理普通文本框

}

String name = item.getName();

longsize = item.getSize();

if(StringUtils.isNotEmpty(name) && size != 0) {

File newFile =newFile(imageFolder , randomName +"_"+ (index++) + CommonUtils.getSuffixByText(name,"."));

try{

item.write(newFile);

fileList.add(CommonUtils.convertAbsolute2RealPath(newFile.getAbsolutePath()));

}catch(Exception e) {

log.error("写入文件上传出现错误:", e);

resultList.add("处理上传文件:["+ name +"]失败!");

}

}

}

}catch(FileUploadException e) {

log.error("文件上传出现错误:", e);

resultList.add("上传文件失败!");

}

returnresultList;

功能预览:

运行主页面,选择上传画质,分别有“正常”和“原图”,正常则为plus.zip压缩的默认大小(API里面可以对宽高的指定大小、百分比大小),采用下拉框实现,在Android和IOS上显示的效果也各不相同。

这里选中了3张图片,使用mui中的9宫格布局,点击其中任意一张图片,则定位到此图片使用previewImage进行效果图预览,在预览图片时,根据选中的是压缩图片或原图进行显示,这里显示的图片有时候看到的不是很清晰(过一会就清晰了),提交到后台时画质不会模糊。

点击第一张图片预览

上传进度和百分比

上传完成后显示服务器端返回的图片路径(这里又有服务器端的压缩)

假设选择上传原图,这里是服务器上压缩后的图片大小

相关下载:

效果预览.gif (完整示例的动画效果图)

前台代码.jpg (手抖前的最新代码截图)

前端代码.zip (手抖将代码删除了,这份儿代码是基于能找回的最新版本上调整的)

看这里:

因为后端的代码是基于一个框架的,代码中依赖的各种工具类太多,就不一一提供了,需要的请联系我。另外示例中的上传地址可能不知在什么时候就过期了,因为我回头会将其与用户的token绑定的,非授权用户无法再上传,不过这可能是“很长”一段时间以后的事情了。

mui ajax 文件上传,MUI的图片上传和压缩相关推荐

  1. MUI 拍照和从系统相册选择图片上传

    要完成用MUI 拍照和从系统相册选择图片上传的功能,可以理解成有三个功能 1 调用手机相机的功能(可以查看官方API  http://www.html5plus.org/doc/zh_cn/camer ...

  2. php上传图片限制类型,php,_使用php的图片上传类进行图片上传,总是提示:上传文件时出错 : 未允许类型 。都是默认的配置,php - phpStudy...

    使用php的图片上传类进行图片上传,总是提示:上传文件时出错 : 未允许类型 .都是默认的配置 使用php的图片上传类进行图片上传,总是提示:上传文件时出错 : 未允许类型 .都是默认的配置 $upl ...

  3. java 图片上传_java web图片上传和文件上传实例

    本篇文章主要介绍了java web图片上传和文件上传实例,具有一定的参考价值,有需要的可以了解一下. 图片上传和文件上传本质上是一样的,图片本身也是文件.文件上传就是将图片上传到服务器,方式虽然有很多 ...

  4. html5 图片上传,支持图片预览、压缩、及进度显示,兼容IE6+及标准浏览器

    原文:html5 图片上传,支持图片预览.压缩.及进度显示,兼容IE6+及标准浏览器 以前写过上传组件,见 打造 html5 文件上传组件,实现进度显示及拖拽上传,兼容IE6+及其它标准浏览器,对付一 ...

  5. php 图片上传 水印,PHP - 图片上传并添加水印

    一个的面向过程的 PHP 图片上传并对其添加文字水印的功能. 还有很多待需完善的地方. index.php $conn=@mysql_connect("localhost",&qu ...

  6. java图片预览上传_Java实现图片上传预览 (使用ajax提交)

    html: 图片上传: js: function changepic(){ var reads = new FileReader(); f = document.getElementById('fil ...

  7. ssm上传文件获取路径_SSM实现图片上传下载功能

    0. 基本步骤框架搭建 实现带图片上传的注册功能 实现下载功能 1. 框架搭建 Step1 创建开发项目 创建基础MVC包结构:controller.service.mapper.pojo Step2 ...

  8. Java做图片上传、文件上传、 批量上传、 Base64图片上传 。附上源码

    Java做文件上传.图片上传后台方法 利用Springboot快速搭建项目环境 项目源码已经上传到码云:https://gitee.com/jack_party/upload .喜欢的朋友可以支持一下 ...

  9. php 文件预览 水印,PHP图片上传,预览图上传,水印设置

    //设置图片的存放目录 设置水印的存放地址如果愿意,可以给预览图.上传图片分设不同的存储地址 $img_path = $_SERVER['DOCUMENT_ROOT']."/data/img ...

最新文章

  1. Unity3D移植到自己的Android程序
  2. python部署_python项目部署
  3. 【Heritrix基础教程之1】在Eclipse中配置Heritrix
  4. html5/css3响应式布局介绍及设计流程
  5. SharePoint Portal Server之常见问题
  6. 破碎纪念---记第二次Nexus4换屏
  7. Redis普通分布式锁
  8. Hudi on Flink 快速上手指南
  9. 在Windows上安装jupyter notebook的scala kernel —— jupyter-scala
  10. Unix/Linux操作系统介绍
  11. vc2005运行库彻底卸载_VC2005运行库-解决方案
  12. 经济应用文写作【7】
  13. ORACLE计算同比环比
  14. 美国大数据工程师面试指南(建议收藏)
  15. PHP+Mysql 实现数据库增删改查
  16. SCI英语论文长难句攻略
  17. C语言——求n天后的日期
  18. 小程序图片电脑开发显示,手机上不显示的问题
  19. R语言绘制PCoA图
  20. notability废纸篓在哪里_Notability 4.4中文版

热门文章

  1. 数据库设计-规范化规则
  2. UE4从4.15移植到4.16
  3. nodejs中处理回调函数的异常
  4. mysql递归层次查询
  5. centOS 搭建pipelineDB docs
  6. 写出漂亮代码的七种方法
  7. VB.NET 中的 As New 以及型別指定
  8. Leetcode--523. 连续的子数组和
  9. android圆形头像 demo,Android图像处理之绘制圆形头像
  10. 无返回值_只需一步,在Spring Boot中统一Restful API返回值格式与处理异常