博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Asp.net mvc]jquery.form.js无刷新上传
阅读量:6036 次
发布时间:2019-06-20

本文共 1994 字,大约阅读时间需要 6 分钟。

写在前面

最近在自己的网盘项目中想用ajax.beginform的方式做无刷新的操作,提交表单什么的都可以,但针对文件上传,就是个鸡肋。在网上查找了发现很多人都遇到了这个问题,大部分都推荐使用jquery.form.js的插件实现。

demo

首先通过nuget安装插件jquery.form.js

引入js文件

前端调用的代码

@{    ViewBag.Title = "Upload";}
@* button 而不是 submit *@

可以对其设置刷新的区域

target: "#myheader",//刷新的区域clearForm: true, // clear all form fields after successful submitresetForm: true, // reset the form after successful submit

服务端代码

public class TestController : Controller    {        // GET: Test        public ActionResult Upload()        {            return View();        }        [HttpPost]        public JsonResult UploadFile()        {            HttpPostedFileBase file = Request.Files[0];            if (file != null)            {                string fileName = Path.GetFileName(file.FileName);                string fileExt = Path.GetExtension(file.FileName);                string fileNewName = Guid.NewGuid() + fileExt;                string fileSaveDir = Server.MapPath("~/upload");                if (!Directory.Exists(fileSaveDir))                {                    Directory.CreateDirectory(fileSaveDir);                }                file.SaveAs(Path.Combine(fileSaveDir, fileName));                return new JsonResult                {                    Data = new                    {                        _code = 200,                        _msg = "上传成功",                        _data = new                        {                            _url = "/upload/" + fileNewName,                            _oldName = fileName                        }                    }                    ,                    JsonRequestBehavior = JsonRequestBehavior.DenyGet                };            }            return new JsonResult { Data = new { _code = 200, _msg = "上传失败" }, JsonRequestBehavior = JsonRequestBehavior.DenyGet };        }    }

测试

jquery.form上传文件内部是怎么实现无刷新的呢?

调试下js你会发现,内部是通过iframe实现的无刷新上传,如下图所示:

总结

最近在网盘项目中用到了上传,本来打算使用ajax.beginform实现,发现并实现不了。只能用jquery.form插件代替了。

转载地址:http://eflhx.baihongyu.com/

你可能感兴趣的文章
IE6 7下绝对定位引发浮动元素神秘消失
查看>>
浏览器的回流和重绘及其优化方式
查看>>
2.4 salt grains与pillar jinja的模板
查看>>
VDI序曲二十 桌面虚拟化和RemoteApp集成到SharePoint 2010里
查看>>
移动互联网,入口生死战
查看>>
JAVA多线程深度解析
查看>>
Kafka High Level Consumer 会丢失消息
查看>>
时间轴
查看>>
java 获取系统当前时间的方法
查看>>
Ubuntu 10.04升级git 到1.7.2或更高的可行方法
查看>>
Spring Security4实战与原理分析视频课程( 扩展+自定义)
查看>>
第一周博客作业
查看>>
thinkpython2
查看>>
oracle recyclebin与flashback drop
查看>>
svmlight使用说明
查看>>
Swing 和AWT之间的关系
查看>>
Mysql设置自增长主键的初始值
查看>>
Android计时器正确应用方式解析
查看>>
获取post传输参数
查看>>
ASP生成静态页面的方法
查看>>