写在前面

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

demo

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

引入js文件

  <script src="~/Scripts/jquery.form.min.js"></script>

前端调用的代码

@{
ViewBag.Title = "Upload";
} <form enctype="multipart/form-data" method="post" id="upload">
<input type="file" id="fileupload" name="Upload" />
@* button 而不是 submit *@
<input type="button" value="上传" id="btn">
</form>
<script>
$("#btn").click(function () {
$("#upload").ajaxSubmit({
url: "../test/UploadFile",
type: "post",
success: function (data) {
console.log(data);
},
error: function (aa) {
console.log(aa);
}
});
});
</script>

可以对其设置刷新的区域

target: "#myheader",//刷新的区域
clearForm: true, // clear all form fields after successful submit
resetForm: 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[];
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 = ,
_msg = "上传成功",
_data = new
{
_url = "/upload/" + fileNewName,
_oldName = fileName
}
}
,
JsonRequestBehavior = JsonRequestBehavior.DenyGet
};
}
return new JsonResult { Data = new { _code = , _msg = "上传失败" }, JsonRequestBehavior = JsonRequestBehavior.DenyGet };
}
}

测试

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

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

总结

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

[Asp.net mvc]jquery.form.js无刷新上传的更多相关文章

  1. jQuery.form Ajax无刷新上传错误 (jQuery.handleError is not a function) 解决方案

    今天,随着ajaxfileupload时间firebug财报显示,"jQuery.handleError is not a function"错误.因为一旦使用jQuery.for ...

  2. 文件上传---form表单,ajax,jquery,以及iframe无刷新上传 (processData,contentType讲解)

    服务端程序: import tornado.web import os IMG_LIST=[] class IndexHandler(tornado.web.RequestHandler): def ...

  3. jQuery AJAX 网页无刷新上传示例

    新年礼,提供简单.易套用的 jQuery AJAX 上传示例及代码下载.后台对文件的上传及检查,以 C#/.NET Handler 处理 (可视需要改写成 Java 或 PHP). 有时做一个网站项目 ...

  4. jquery ajax php 无刷新上传文件 带 遮罩 进度条 效果的哟

    在很多项目中都会叫用户上传东西这些的,自从接触了jquery 和ajax之后就不管做什么,首先都会想到这个,我这个人呢?是比较重视客户体验的,这次我这边负责的是后台板块,然后就有一块是要求用户上传照片 ...

  5. jquery.form.js实现异步上传

    前台页面 @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewpor ...

  6. jquery.form.js ajax提交上传文件

    项目中最近有用到表单提交,是带有图片上传的表单录入,需要ajax异步提交,网上找了好多例子都是只能提交上传字段一个信息的,这里整理一下.表单里有普通文本信息字段也有图片上传字段. 1.jsp代码--引 ...

  7. jquery.form.js 实现异步上传

    前台: <form id="formSeacrh" action="/ResumeInfo/uploadFile" method="post&q ...

  8. asp.net使用jquery.form实现图片异步上传

    首先我们需要做准备工作: jquery下载:http://files.cnblogs.com/tianguook/jquery1.8.rar jquery.form.js下载:http://files ...

  9. 解决 jquery.form.js和springMVC上传 MultipartFile取不到信息

    前段页面: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEnc ...

随机推荐

  1. url 字符串中的参数信息

    /// <summary>        /// 分析 url 字符串中的参数信息        /// </summary>        /// <param nam ...

  2. linux远程登陆其他主机并执行命令的若干方式

    一.命令行登陆 ssh后,一定后边加双引号 写命令,否则命令实在本地执行的,多条命令的话用双引号隔开, ssh user@remoteNode "cd /home ; ls" 二. ...

  3. dotnet反编译工具大全

    反编译不是为了破解软件,而是在开发时更好的读懂程序干了什么,比如MVC的源码,如果使用1和4的VS插件能更好的进行断点跟踪. 常用,效率最高: 1.[.NET Reflector]首选,能比较好的反编 ...

  4. SQLite Learning、SQL Query Optimization In Multiple Rule

    catalog . SQLite简介 . Sqlite安装 . SQLite Programing . SQLite statements 1. SQLite简介 SQLite是一款轻型的数据库,是遵 ...

  5. C/C++ 程序的build过程

    (This article is under constant construction) DISCLAIMER: 本文的主要内容来自https://gcc.gnu.org/onlinedocs/gc ...

  6. K米评测

    调研,评测 1)评测 体验: 流畅度不足. 遥控按钮太过偏右,对大屏手机用户不够友好. ui风格不统一,矩形,圆角矩形,圆形混用,圆角矩形的圆角半径也不相同. 状态栏不是沉浸式的,观感较差,特别是白色 ...

  7. GSON使用笔记(1) -- 序列化时排除字段的几种方式

    http://blog.csdn.net/zxhoo/article/details/21471005 GSON是Google发布的JSON序列化/反序列化工具,非常容易使用.本文简要讨论在使用GSO ...

  8. POJ2635The Embarrassed Cryptographer(大数取余+素数筛选+好题)

    题目链接 题意:K是由两个素数乘积,如果最小的素数小于L,输出BAD最小的素数,否则输出GOOD 分析 素数打表将 L 大点的素数打出来,一定要比L大,然后就开始枚举,只需K对 素数 取余 看看是否为 ...

  9. python 处理CSV数据

    从CS中导入数据 Python中有一个CSV模块支持读写各种方言格式的CSV文件.方言是很重要的,因为没有一个同意的CSV标准,不同的应用实现CSV的方式略有不同,当看到文件的内容的时候你往往很容易第 ...

  10. java中Scanner和random的用法

    Scanner是默认按照行来读取数字的. 创建一个用来输入的函数 Scanner scan=new Scanner(System.in):system.in是表示从控制台输入. 然后用一个变量类接收这 ...