1:首先设置文件上传的配置信息
package com.yw.appi; import com.yw.appi.interceptor.APPInterceptor; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import org.springframework.boot.context.embedded.MultipartConfigFactory; import javax.servlet.MultipartConfigElement; /** * Created by xiaoji on 2015/3/17. */ @Configuration @ComponentScan @EnableAutoConfiguration public class Application extends WebMvcConfigurerAdapter { public static void main(String[] args) { SpringApplication.run(Application.class, args); } /** * 配置拦截器 * @param registry */ public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new APPInterceptor()).addPathPatterns("/userControl/**","/orderControl/**","/payControl/**","/consigneeControl/**"); } @Bean public MultipartConfigElement multipartConfigElement() { MultipartConfigFactory factory = new MultipartConfigFactory(); factory.setMaxFileSize("12800KB"); factory.setMaxRequestSize("12800KB"); return factory.createMultipartConfig(); } }
2:创建上传后台controller
package com.yw.appi.controller; import com.yw.appi.util.SYS; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; /** * Created by xiaoji on 2015/9/24. * 图片上传DEMO */ @Controller @RequestMapping(value="/fileUploaderControl") public class FileUploaderController { /** * 上传DEMO */ @RequestMapping(value="/upload", method = {RequestMethod.POST}) public void images(ModelMap modelMap,HttpServletRequest request, @RequestParam("file") MultipartFile file){ String path = "D:\\upload\\"+file.getOriginalFilename(); File targetFile = new File(path); try { file.transferTo(targetFile); } catch (IOException e) { e.printStackTrace(); } modelMap.addAllAttributes(SYS.SUCCESS.Msg); } }
3:创建一个h5+demo,更改服务器地址为http://192.168.1.35:8080/fileUploaderControl/upload,ip自己设置
,更改文件的key为后台对应的参数file,这里我只测试了单个文件上传,多个自由发挥,文档说的多个key不能相同,这个没测试过,有需要的自己测试。
代码如下:
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"/> <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/> <meta name="HandheldFriendly" content="true"/> <meta name="MobileOptimized" content="320"/> <title>Hello H5+</title> <script type="text/javascript" src="../js/common.js"></script> <script type="text/javascript"> //var server="http://demo.dcloud.net.cn/helloh5/uploader/upload.php"; var server="http://192.168.1.35:8080/fileUploaderControl/upload"; var files=[]; // 上传文件 function upload(){ if(files.length<=0){ plus.nativeUI.alert("没有添加上传文件!"); return; } outSet("开始上传:") var wt=plus.nativeUI.showWaiting(); var task=plus.uploader.createUpload(server, {method:"POST"}, function(t,status){ //上传完成 if(status==200){ outLine("上传成功:"+t.responseText); plus.storage.setItem("uploader",t.responseText); var w=plus.webview.create("uploader_ret.html","uploader_ret.html",{scrollIndicator:'none',scalable:false}); w.addEventListener("loaded",function(){ wt.close(); w.show("slide-in-right",300); },false); }else{ outLine("上传失败:"+status); wt.close(); } } ); task.addData("client","HelloH5+"); task.addData("uid",getUid()); for(var i=0;i<files.length;i++){ var f=files[i]; task.addFile(f.path,{key:"file"}); } task.start(); } // 拍照添加文件 function appendByCamera(){ plus.camera.getCamera().captureImage(function(p){ appendFile(p); }); } // 从相册添加文件 function appendByGallery(){ plus.gallery.pick(function(p){ appendFile(p); }); } // 添加文件 var index=1; function appendFile(p){ var fe=document.getElementById("files"); var li=document.createElement("li"); var n=p.substr(p.lastIndexOf('/')+1); li.innerText=n; fe.appendChild(li); files.push({name:"uploadkey"+index,path:p}); index++; empty.style.display="none"; } // 产生一个随机数 function getUid(){ return Math.floor(Math.random()*100000000+10000000).toString(); } </script> <link rel="stylesheet" href="../css/common.css" type="text/css" charset="utf-8"/> </head> <body> <header> <div class="nvbt iback" onclick="back(true);"></div> <div class="nvtt">Uploader</div> <div class="nvbt idoc" onclick="openDoc('Uploader Document','/doc/uploader.html')"></div> </header> <div id="dcontent" class="dcontent"> <br/> <p class="heading">上传文件列表:</p> <ul id="files" style="text-align:left;"> <p id="empty" style="font-size:12px;color:#C6C6C6;">无上传文件</p> </ul> <table style="width:100%;"> <tbody> <tr> <td style="width:40%"><div class="button button-select" onclick="appendByCamera()">拍照</div></td> <td style="width:40%"><div class="button button-select" onclick="appendByGallery()">相册选取</div></td> </tr> </tbody> </table> <br/> <div class="button" onclick="upload()">上 传</div> <br/> <!--<ul class="dlist"> <li class="ditem" onclick="appendByCamera()">拍照添加文件</li> <li class="ditem" onclick="appendByGallery()">相册添加文件</li> </ul>--> </div> <div id="output"> Uploader用于管理文件的上传,用于从本地上传各种文件到网络服务器,支持跨域访问操作。 </div> </body> </html>
相关推荐
该项目利用了基于springboot + vue + mysql的开发...Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes
该项目利用了基于springboot + vue + mysql的开发...Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes
前端:国产的MUI框架前端:Spring Boot + Spring data JPA运行项目分2部分,一个web端,一个服务器端。 1.将服务器端的代码导入IDEA,在属性文件中配置好数据库信息。通过使用Spring数据JPA,创建好数据库后,运行...
Spring Boot | 容器+MVC框架 | https://spring.io/projects/spring-boot MyBatis | ORM框架 | http://www.mybatis.org/mybatis-3/zh/index.html MyBatisGenerator | 数据层代码生成 | ...
《使用MUI、HBuilder与Spring Boot构建混合移动应用》 在移动应用开发领域,混合应用(Hybrid App)已经成为一种常见的解决方案,它结合了原生应用的优势和Web应用的便利性。本资源"mui_hbuilder_springboot.app....
" 暗示了这个项目可能是一个移动端在线购物应用的前端部分,使用了HTML、Java(可能是服务器端技术如Spring Boot或Android)和jQuery库。HTML5是网页开发的基础,提供了更好的离线存储、多媒体支持等功能。jQuery...
此外,项目名为"Mui_OnlineAppraise_SSM-master"暗示了后端可能采用了Spring Boot、Spring MVC和MyBatis(SSM)框架。这是一个常见的Java Web开发组合,Spring Boot简化了项目配置,Spring MVC处理HTTP请求,MyBatis...
# 项目是一套聊天系统,包括前台手机界面及后台分布式系统,基于SpringBoot+Netty+MUI+H5Plus+Nginx+FastDFS分布式文件系统搭建的聊天系统。 前端聊天系统包含首页门户登录注册、互信、通讯录、发现、我等模块,添加...
该项目利用了基于springboot + vue + mysql的开发...Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes
3. Spring Boot框架:Spring Boot是一个基于Spring框架的框架,提供了快速开发的能力。 4. MUI框架:MUI是一个前端框架,提供了简洁的界面设计和灵活的布局管理。 5. HBuilder软件:HBuilder是一个前端开发工具,...
在IT行业中,Jeesite是一个基于Spring Boot的开源企业级快速开发框架,它提供了丰富的功能模块,如权限管理、工作流等,适用于构建各种企业级Web应用。在移动互联网时代,支持手机登录已经成为一个基本需求。然而,...
MUI不依赖任何第三方JS库,压缩后的JS和CSS文件仅有100+K和60+K - 原生UI 鉴于之前的很多前端框架(特别是响应式布局的框架),UI控件看起来太像网页,没有原生感觉,因此追求原生UI感觉也是我们的重要目标 MUI以iOS...
Java在电商领域广泛应用,因为它支持多线程、安全性高,且有丰富的开源库和框架,如Spring Boot、Hibernate、MyBatis等,这些都能够加速商城系统的开发进程。 【压缩包子文件的文件名称列表】:虽然只给出了“html...
Boot教程 前端所用技术 MUI:原生前端框架 jQuery BootStrap DataTables:jQuery表格插件 后端所用技术 各框架依赖版本皆使用目前最新版本 SpringBoot SpringMVC Spring Data Jpa MySQL Spring Data Redis Druid ...
使用Spring Boot作为基础服务框架,Dubbo作为分布式RPC服务框架,Zookeeper作为服务注册中心,Docker作为服务发布容器。Jenkins用于持续集成。 4. **动静分离与CDN**:通过CDN实现静态资源的加速访问,静态数据(如...
2. **前端与后端技术**:例如,骆汛枫等人采用Vue.js和MUI结合的前端技术,基于Spring Boot框架的后端技术,结合协同过滤算法开发了一个专门解决大学生找兼职问题的移动web网站。 3. **安全性与用户体验**:周可和芦...