input[type=file]中使用ajaxSubmit来图片上传
今天在使用input[type=file]上传图片到服务器时,因为项目要求,并不是像常见的通过按钮来提交表单事件,而是图片上传后就自动执行表单提交事件,将上传的图片信息传给服务器。
刚开始我是这样执行的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | <! DOCTYPE html> < html lang="en"> < head > < meta charset="UTF-8"> < title >Document</ title > < style > .file{ width: 75px; height: 25px; line-height: 25px; text-align: center; background-color: green; position:relative; } .file input{ width: 75px; height: 25px; opacity:0; filter:alpha(opacity=0); position:absolute; left:0; top:0; } #dd{ display: none; } </ style > </ head > < body > < form action="接口的url" name="file" class="file"> 上传文件 < input type="file" id="img" name="file"> </ form > < div id="dd"></ div > < script > var file = document.getElementById("img"); file.onchange = function(){ var files = this.files; for(var i=0;i< files.length ;i++){ readers(files[i]) } } function readers(fil){ var reader = new FileReader(); reader.readAsDataURL(fil); reader.onload = function(){ form.submit(); // 文件上传后执行表单提交事件 }; } </script> </ body > </ html > |
后来发现不行,原来是form标签里缺少一句很重要的代码:enctype="multipart/form-data" 还有一个问题就是input[type=file]的name值必须为file,改好后,能将图片上传到指定服务器,但同时,新的问题产生了,那就是表单提交后,该页面会发生跳转,跳转到接口地址,这不是我想要的,我想要的是表单提交后,跳转到一个进度条页面,来展示图片处理的进度。
于是不得不寻求新的方法,在网上看到有ajaxSubmit这种方法,这是jquery中的一种方法,使用这种方法,需要引入jquery文件以及jquery.form文件。而后就是去掉form表单中action的值,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | < script > $(function(){ $("#img").change(function(){ var file = this.files; console.log(file) for(var i=0;i<file.length;i++){ readFiles(file[i]) } }) function readFiles(file){ var reader = new FileReader(); reader.readAsDataURL(file); reader.onload = function(){ $('form').ajaxSubmit({ method:'post', url:'', // 上传的接口地址 success: function(data,s, status){ //上传成功之后的操作。跳转到新的页面,后面是需要传递的参数,这里使用了模版字符串 window.location.href = `progress.html?key=${data.body.key}&date=${data.body.date}` }, error: function (data, status, e){ //上传失败之后的操作 alert("上传失败") } }) }; } )} |
注意:使用ajaxSubmit方法来提交文件时,需要引入jquery文件和jquery.form文件。
作者:江峰★
出处:http://www.cnblogs.com/jf-67/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?