基于jQuery通过jQuery.form.js插件实现异步上传


Posted in Javascript onDecember 13, 2015

本文主要从前台和后台代码分析了jquery.form.js实现异步上传的方法,分享给大家,具体代码如下

前台代码:

@{
 Layout = null;
}
<!DOCTYPE html>
<html>
<head>
 <meta name="viewport" content="width=device-width" />
 <script src="~/Scripts/jquery-1.7.2.min.js"></script>
 <script src="~/Scripts/jquery.form.js"></script>
 <title>upload</title>
</head>
<body>
 <form id="fileForm" method="post" enctype="multipart/form-data" action="/upload/upload">
  文件名称:<input name="fileName" type="text"><br />
  上传文件:<input name="myfile" type="file" multiple="multiple"><br />
  <input id="submitBtn" type="submit" value="提交">
  <img src="#" alt="my img" id="iceImg" width="300" height="300" style="display: block;" />
 </form>

 
 <input type="text" name="height" value="170" />
 <input id="sbtn2" type="button" value="提交表单2">

 <input type="text" name="userName" value="" />
 <script type="text/javascript">
  $(function () {
   $("#fileForm").ajaxForm({
    //定义返回JSON数据,还包括xml和script格式
    //clearForm Boolean值属性,表示是否在表单提交成功后情况表单数据
    //dataType 提交成果后返回的数据格式,可选值包括xml,json或者script
    //target 服务器返回信息去更新的页面对象,可以是jquery选择器字符串或者jquer对象或者DOM对象。
    //type 提交类型可以是”GET“或者”POST“
    //url 表单提交的路径
    dataType: 'json',
    beforeSend: function () {
     //表单提交前做表单验证
     $("#myh1").show();
    },
    success: function (data) {
     //提交成功后调用
     //alert(data.message);
     $("#iceImg").attr('src', '/upload/img/' + data.fileName);
     $("#myh1").hide();
     //防止重复提交的方法
     //1.0 清空表单数据
     $('#fileForm').clearForm();
     //2.0 禁用提交按钮

     //3.0 跳转页面
    }
   });


   $("#myfile").change(function () {
    $("#submitBtn").click();
   });

   $("#iceImg").click(function () {
    $("#myfile").click();
   });
  });
 </script>
 <h1 id="myh1" style="display: none;">加载中...</h1>
</body>
</html>

后台代码:

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace IceMvc.Controllers
{
 public class UploadController : Controller
 {
  //
  // GET: /Upload/

  public ActionResult Index()
  {
   return View();
  }

  [HttpPost]
  public ActionResult Upload()
  {
   var filesList = Request.Files;
   for (int i = 0; i < filesList.Count; i++)
   {
    var file = filesList[i];
    if (file.ContentLength > 0)
    {
     if (file.ContentLength > 5242880)
     {
      return Content("<script>alert('注册失败!因为您选择图片文件不能大于5M.');window.location='/User/Register';</script>");
     }

     //得到原图的后缀
     string extName = System.IO.Path.GetExtension(file.FileName);
     //生成新的名称
     string newName = Guid.NewGuid() + extName;

     string imgPath = Server.MapPath("/upload/img/") + newName;

     if (file.ContentType.Contains("image/"))
     {
      using (Image img = Image.FromStream(file.InputStream))
      {
       img.Save(imgPath);
      }
      var obj = new { fileName = newName };
      return Json(obj);
     }
     else
     {
      //return Content("<script>alert('注册失败!因为您未选择图片文件.');window.location='/User/Register';</script>");
     }
    }
   }

   return Content("");
  }

  public ActionResult Afupload()
  {
   return View();
  }
 }
}

以上就是针对jquery.form.js实现异步上传的方法,希望对大家的学习有所帮助。

Javascript 相关文章推荐
jquery ui对话框实例代码
May 10 Javascript
jQuery实现列表自动滚动循环滚动展示新闻
Aug 22 Javascript
jQuery实现气球弹出框式的侧边导航菜单效果
Sep 22 Javascript
js HTML5 Canvas绘制转盘抽奖
Sep 13 Javascript
手机图片预览插件photoswipe.js使用总结
Aug 25 Javascript
JS 根据子网掩码,网关计算出所有IP地址范围示例
Apr 23 Javascript
移动端效果之IndexList详解
Oct 20 Javascript
JavaScript累加、迭代、穷举、递归等常用算法实例小结
May 08 Javascript
详解Angular-ui-BootStrap组件的解释以及使用
Jul 13 Javascript
vue配置nprogress实现页面顶部进度条
Sep 21 Javascript
vue基础知识--axios合并请求和slot
Jun 04 Javascript
JavaScript 闭包的使用场景
Sep 17 Javascript
推荐阅读的js快速判断IE浏览器(兼容IE10与IE11)
Dec 13 #Javascript
JS如何判断是否为ie浏览器的方法(包括IE10、IE11在内)
Dec 13 #Javascript
javascript性能优化之DOM交互操作实例分析
Dec 12 #Javascript
JavaScript文档碎片操作实例分析
Dec 12 #Javascript
javascript性能优化之事件委托实例详解
Dec 12 #Javascript
jsonp跨域请求数据实现手机号码查询实例分析
Dec 12 #Javascript
jQuery Validate初步体验(二)
Dec 12 #Javascript
You might like
PHP微框架Dispatch简介
2014/06/12 PHP
编写PHP脚本清除WordPress头部冗余代码的方法讲解
2016/03/01 PHP
jQuery 创建Dom元素
2010/05/07 Javascript
基于jquery的一个OutlookBar类,动态创建导航条
2010/11/19 Javascript
js动画(animate)简单引擎代码示例
2012/12/04 Javascript
JavaScript中“基本类型”之争小结
2013/01/03 Javascript
JQuery中根据属性或属性值获得元素(6种情况获取方法)
2013/01/17 Javascript
js监听键盘事件示例代码
2013/07/26 Javascript
JS日期和时间选择控件升级版(自写)
2013/08/02 Javascript
js下将阿拉伯数字每三位一逗号分隔(如:15000000转化为15,000,000)
2014/06/02 Javascript
一个获取第n个元素节点的js函数
2014/09/02 Javascript
常用的JS验证和函数汇总
2014/12/23 Javascript
javascript实现根据3原色制作颜色选择器的方法
2015/07/17 Javascript
基于jQuery和CSS3制作数字时钟附源码下载(jquery篇)
2015/11/24 Javascript
最棒的Angular2表格控件
2016/08/10 Javascript
Vue from-validate 表单验证的示例代码
2017/09/26 Javascript
浅谈Vue SPA 首屏加载优化实践
2017/12/15 Javascript
Node.js readline 逐行读取、写入文件内容的示例
2018/03/01 Javascript
VUE2.0 ElementUI2.0表格el-table自适应高度的实现方法
2018/11/28 Javascript
nodejs dgram模块广播+组播的实现示例
2019/11/04 NodeJs
Python中使用动态变量名的方法
2014/05/06 Python
python中enumerate函数遍历元素用法分析
2016/03/11 Python
Python+MongoDB自增键值的简单实现
2016/11/04 Python
python如何为创建大量实例节省内存
2018/03/20 Python
Python redis操作实例分析【连接、管道、发布和订阅等】
2019/05/16 Python
Python正则re模块使用步骤及原理解析
2020/08/18 Python
html5使用Drag事件编辑器拖拽上传图片的示例代码
2017/08/22 HTML / CSS
美国市场上最实惠的送餐服务:Dinnerly
2018/03/18 全球购物
EJB发布WEB服务一般步骤
2012/10/31 面试题
教学评估实施方案
2014/03/16 职场文书
计算机专业应届生求职信
2014/04/06 职场文书
竞赛口号大全
2014/06/16 职场文书
中学生自我评价范文
2015/03/03 职场文书
美丽的大脚观后感
2015/06/03 职场文书
用Python监控你的朋友都在浏览哪些网站?
2021/05/27 Python
使用Pytorch实现two-head(多输出)模型的操作
2021/05/28 Python