基于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 相关文章推荐
如何在Web页面上直接打开、编辑、创建Office文档
Mar 12 Javascript
AJAX 网页保留浏览器前进后退等功能
Feb 12 Javascript
jquery getScript动态加载JS方法改进详解
Nov 15 Javascript
终于解决了IE8不支持数组的indexOf方法
Apr 03 Javascript
javascript实现存储hmtl字符串示例
Apr 25 Javascript
自写的jQuery异步加载数据添加事件
May 15 Javascript
表单验证正则表达式实例代码详解
Nov 09 Javascript
谈一谈javascript闭包
Jan 28 Javascript
浅析JS中常用类型转换及运算符表达式
Jul 23 Javascript
Vue隐藏显示、只读实例代码
Jul 18 Javascript
JavaScript实现多态和继承的封装操作示例
Aug 20 Javascript
JS使用正则表达式提交页面验证的代码
Oct 16 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 define函数的使用说明
2008/08/27 PHP
PHP面向对象程序设计实例分析
2016/01/26 PHP
PHP 中魔术常量的实例详解
2017/10/26 PHP
javascript内置对象操作详解
2015/02/04 Javascript
js行号显示的文本框实现效果(兼容多种浏览器 )
2015/10/23 Javascript
牛叉的Jquery——Jquery与DOM对象的互相转换及DOM的三种操作
2015/10/29 Javascript
js实现简单排列组合的方法
2016/01/27 Javascript
微信小程序 首页制作简单实例
2017/04/07 Javascript
第一次记录Bootstrap table学习笔记(1)
2017/05/18 Javascript
js 获取html5的data属性实现方法
2017/07/28 Javascript
vue2.0之多页面的开发的示例
2018/01/30 Javascript
layui之select的option叠加问题的解决方法
2018/03/08 Javascript
javaScript中indexOf用法技巧
2019/11/26 Javascript
如何使用 JavaScript 操作浏览器历史记录 API
2020/11/24 Javascript
[01:23]2019完美世界全国高校联赛(春季赛)合肥全国总决赛
2019/06/10 DOTA
[57:29]Alliance vs KG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/17 DOTA
[39:08]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第一场 12.12
2020/12/16 DOTA
python 正则式 概述及常用字符
2009/05/07 Python
Python代码缩进和测试模块示例详解
2018/05/07 Python
python使用selenium实现批量文件下载
2019/03/11 Python
Python发展史及网络爬虫
2019/06/19 Python
python解析yaml文件过程详解
2019/08/30 Python
Python实现随机取一个矩阵数组的某几行
2019/11/26 Python
基于Python实现人脸自动戴口罩系统
2020/02/06 Python
Python实现动态循环输出文字功能
2020/05/07 Python
Python实现自动签到脚本的示例代码
2020/08/19 Python
python UDF 实现对csv批量md5加密操作
2021/01/01 Python
HTML5 Canvas 实现圆形进度条并显示数字百分比效果示例
2017/08/18 HTML / CSS
Brydge英国:适用于Apple iPad和Microsoft Surface Pro的蓝牙键盘
2019/05/16 全球购物
公司JAVA开发面试题
2015/04/02 面试题
三个Unix的命令面试题
2015/04/12 面试题
优秀毕业生求职推荐信范文
2013/11/21 职场文书
感恩节活动方案
2014/01/27 职场文书
七夕活动策划方案
2014/08/16 职场文书
市委召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
2014年班级工作总结
2014/11/14 职场文书