基于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评估用户输入密码的强度(Knockout版)
Nov 30 Javascript
jq选项卡鼠标延迟的插件实例
May 13 Javascript
jQuery实现的表头固定效果实例【附完整demo源码下载】
Aug 01 Javascript
vue.js事件处理器是什么
Mar 20 Javascript
基于jquery实现二级联动效果
Mar 30 jQuery
微信小程序 开发之全局配置
May 05 Javascript
浅谈JS对象添加getter与setter的5种方法
Jun 09 Javascript
手把手教你用Node.js爬虫爬取网站数据的方法
Jul 05 Javascript
JS实现中英文混合文字溢出友好截取功能
Aug 06 Javascript
JS实现Cookie读、写、删除操作工具类示例
Aug 28 Javascript
Vue.js中对css的操作(修改)具体方式详解
Oct 30 Javascript
vue车牌号校验和银行校验实战
Jan 23 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
数字转英文
2006/12/06 PHP
php写的简易聊天室代码
2011/06/04 PHP
CentOS 6.3下安装PHP xcache扩展模块笔记
2014/09/10 PHP
PHP登录验证码的实现与使用方法
2016/07/07 PHP
PHP数据对象PDO操作技巧小结
2016/09/27 PHP
PHP获取数组中单列值的方法
2017/06/10 PHP
PHP调用接口API封装的例子
2019/10/11 PHP
laravel excel 上传文件保存到本地服务器功能
2019/11/14 PHP
如果文字过长,则将过长的部分变成省略号显示
2006/06/26 Javascript
js 发个判断字符串是否为符合标准的函数
2009/04/27 Javascript
几个比较经典常用的jQuery小技巧
2010/03/01 Javascript
JavaScript 面向对象编程(1) 基础
2010/05/18 Javascript
Javascript中的回调函数和匿名函数的回调示例介绍
2014/05/12 Javascript
超级简单实现JavaScript MVC 样式框架
2015/03/24 Javascript
纯JavaScript实现的兼容各浏览器的添加和移除事件封装
2015/03/28 Javascript
jQuery常见的选择器及用法介绍
2016/12/20 Javascript
React-router v4 路由配置方法小结
2017/08/08 Javascript
详解Angular5 服务端渲染实战
2018/01/04 Javascript
mpvue小程序循环动画开启暂停的实现方法
2019/05/15 Javascript
Python中os.path用法分析
2015/01/15 Python
python生成IP段的方法
2015/07/07 Python
浅谈python爬虫使用Selenium模拟浏览器行为
2018/02/23 Python
Python 一键获取百度网盘提取码的方法
2019/08/01 Python
Python线程指南分享
2019/11/19 Python
Python selenium 自动化脚本打包成一个exe文件(推荐)
2020/01/14 Python
Python sqlite3查询操作过程解析
2020/02/20 Python
Scrapy中如何向Spider传入参数的方法实现
2020/09/28 Python
美国在线和移动免费会员制批发零售商:Boxed(移动端的Costco)
2020/01/02 全球购物
C语言编程练习
2012/04/02 面试题
医院信息公开实施方案
2014/05/09 职场文书
运动会加油口号
2014/06/07 职场文书
婚庆答谢词
2015/01/04 职场文书
教师个人学习总结
2015/02/11 职场文书
学习焦裕禄观后感
2015/06/09 职场文书
golang 实现并发求和
2021/05/08 Golang
用python画城市轮播地图
2021/05/28 Python