springMVC+ajax实现文件上传且带进度条实例
更新时间:2017年01月18日 09:40:18 作者:肖哥哥
本篇文章主要介绍了springMVC+ajax实现文件上传且带进度条实例,具有一定的参考价值,有兴趣的可以了解一下。
前端代码:
<form id= "uploadForm"> <p >指定文件名: <input type="text" name="filename" value= ""/></p > <p >上传文件: <input type="file" name="file"/></ p> <input type="button" value="上传" onclick="doUpload()" /> </form> function doUpload() { var formData = new FormData($( "#uploadForm" )[0]); $.ajax({ url: 'http://localhost:8080/xiaochangwei/file/upload' , type: 'POST', data: formData, async: false, cache: false, contentType: false, processData: false, success: function (returndata) { alert(returndata); }, error: function (returndata) { alert(returndata); } }); }
后端:
@RequestMapping(value = "/upload", method = RequestMethod.POST) public String upload(HttpServletRequest request, @RequestParam("file") MultipartFile file, ModelMap model) { System.out.println("开始"); String path = request.getSession().getServletContext().getRealPath("upload"); String fileName = file.getOriginalFilename(); // String fileName = new Date().getTime()+".jpg"; System.out.println(path); File targetFile = new File(path, fileName); if (!targetFile.exists()) { targetFile.mkdirs(); } // 保存 try { file.transferTo(targetFile); } catch (Exception e) { e.printStackTrace(); } model.addAttribute("fileUrl", request.getContextPath() + "/upload/" + fileName); return "result"; }
如果前端有很多实体类数据同文件一同提交
可以修改后端方法为:
复制代码 代码如下:
upload(HttpServletRequest request, @RequestParam("file") MultipartFile file, ModelMap model,User user)
利用下面的代码更可实现带有进度条的文件上传
<script type="text/javascript"> function UpladFile() { var fileObj = document.getElementById("file").files[0]; // js 获取文件对象 var FileController = "http://localhost:8080/xiaochangwei/file/upload"; // 接收上传文件的后台地址 // FormData 对象 var form = new FormData($( "#uploadForm" )[0]); // XMLHttpRequest 对象 var xhr = new XMLHttpRequest(); xhr.open("post", FileController, true); xhr.onload = function () { // alert("上传完成!"); }; xhr.upload.addEventListener("progress", progressFunction, false); xhr.send(form); } function progressFunction(evt) { var progressBar = document.getElementById("progressBar"); var percentageDiv = document.getElementById("percentage"); if (evt.lengthComputable) { progressBar.max = evt.total; progressBar.value = evt.loaded; percentageDiv.innerHTML = Math.round(evt.loaded / evt.total * 100) + "%"; if(evt.loaded==evt.total){ alert("上传完成100%"); } } } </script> <progress id="progressBar" value="0" max="100"></progress> <form id= "uploadForm"> <input type="file" id="file" name="myfile" /> <input type="button" onclick="UpladFile()" value="上传" /> </form>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
使用SpringBoot整合Activiti6工作流的操作方法
这篇文章主要介绍了使用SpringBoot整合Activiti6工作流,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2022-07-07Intellij IDEA 与maven 版本不符 Unable to import maven project See
这篇文章主要介绍了Intellij IDEA 与maven 版本不符 Unable to import maven project See logs for details: No implementation for org.apache.maven.model.path.PathTranslator was bound,本文通过图文给大家分享解决方案,需要的朋友可以参考下2020-08-08java文件操作报错:java.io.FileNotFoundException(拒绝访问)问题
在进行编程时,经常会遇到因疏忽小细节而导致的错误,如忘记在路径后添加文件名,本文通过一个具体的修改前后对比示例,解释了错误原因,并给出了解决方案,这类经验分享对编程学习者具有参考价值2024-10-10IntelliJ IDEA中properties文件显示乱码问题的解决办法
今天小编就为大家分享一篇关于IntelliJ IDEA中properties文件显示乱码问题的解决办法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧2018-10-10
最新评论