基于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 相关文章推荐
JavaScript 继承详解(三)
Jul 13 Javascript
js判断是否为ie的方法小结
Jan 13 Javascript
node.js Web应用框架Express入门指南
May 28 Javascript
使用jquery.upload.js实现异步上传示例代码
Jul 29 Javascript
JS实现横向与竖向两个选项卡Tab联动的方法
Sep 27 Javascript
JS处理json日期格式化问题
Oct 01 Javascript
跟我学习javascript的prototype使用注意事项
Nov 17 Javascript
js解决movebox移动问题
Mar 29 Javascript
JavaScript中localStorage对象存储方式实例分析
Jan 12 Javascript
node.js爬虫爬取拉勾网职位信息
Mar 14 Javascript
Vue数组更新及过滤排序功能
Aug 10 Javascript
vue.js 双层嵌套for遍历的方法详解, 类似php foreach()
Sep 07 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执行linux系统命令的常用函数使用说明
2010/04/27 PHP
js实现兼容IE6与IE7的DIV高度
2010/05/13 Javascript
javascript日期格式化示例分享
2014/03/05 Javascript
轻松创建nodejs服务器(2):nodejs服务器的构成分析
2014/12/18 NodeJs
分享十五款 jQuery 社交网络分享插件
2015/05/16 Javascript
浅谈jquery高级方法描述与应用
2016/10/04 Javascript
详解Jquery的事件操作和文档操作
2016/12/19 Javascript
Bootstrap超大屏幕的实现代码
2017/03/22 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
2017/04/26 Javascript
ExtJs异步无法向外传值和赋值的完美解决办法
2017/06/14 Javascript
jQuery 实现双击编辑表格功能
2017/06/19 jQuery
jQuery 循环遍历改变a标签的href(实例讲解)
2017/07/12 jQuery
Vee-Validate的使用方法详解
2017/09/22 Javascript
vue轮播图插件vue-awesome-swiper
2017/11/27 Javascript
iview中Select 选择器多选校验方法
2018/03/15 Javascript
Vue实现textarea固定输入行数与添加下划线样式的思路详解
2018/06/28 Javascript
layer.close()关闭进度条和Iframe窗的方法
2018/08/17 Javascript
webpack4 升级迁移的实现
2018/09/12 Javascript
灵活使用console让js调试更简单的方法步骤
2019/04/23 Javascript
[02:09:59]火猫TV国士无双dota2 6.82版本详解(下)
2014/09/29 DOTA
使用Python来编写HTTP服务器的超级指南
2016/02/18 Python
在cmd中运行.py文件: python的操作步骤
2018/05/12 Python
基于scrapy的redis安装和配置方法
2018/06/13 Python
对python中for、if、while的区别与比较方法
2018/06/25 Python
Python实现的服务器示例小结【单进程、多进程、多线程、非阻塞式】
2019/05/23 Python
pandas数据处理之绘图的实现
2020/06/15 Python
Python单元测试及unittest框架用法实例解析
2020/07/09 Python
Python如何将将模块分割成多个文件
2020/08/04 Python
详解三种方式实现平滑滚动页面到顶部的功能
2019/04/23 HTML / CSS
static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
2015/02/22 面试题
最新优秀教师个人先进事迹材料
2014/05/06 职场文书
2014年小学德育工作总结
2014/12/05 职场文书
繁星春水读书笔记
2015/06/30 职场文书
会计手工模拟做账心得体会
2016/01/22 职场文书
MySQL如何快速创建800w条测试数据表
2022/03/17 MySQL
详解Golang如何优雅的终止一个服务
2022/03/21 Golang