基于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 ajax对特殊字符进行转义防止js注入使用示例
Nov 21 Javascript
jQuery回调函数的定义及用法实例
Dec 23 Javascript
jQuery实现按钮只点击一次后就取消点击事件绑定的方法
Jun 26 Javascript
JS实现仿新浪黄色经典滑动门效果代码
Sep 27 Javascript
BootStrap制作导航条实例代码
May 06 Javascript
使用微信小程序开发前端【快速入门】
Dec 05 Javascript
Ajax和Comet技术总结
Feb 19 Javascript
es6 字符串String的扩展(实例讲解)
Aug 03 Javascript
纯js实现画一棵树的示例
Sep 05 Javascript
解决Jquery下拉框数据动态获取的问题
Jan 25 jQuery
你不知道的Vue技巧之--开发一个可以通过方法调用的组件(推荐)
Apr 15 Javascript
vue.js中ref和$refs的使用及示例讲解
Aug 14 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
Linux平台php命令行程序处理管道数据的方法
2016/11/10 PHP
PHP使用mysqli同时执行多条sql查询语句的实例
2019/03/22 PHP
去除链接虚线全面分析总结
2006/08/15 Javascript
JavaScript DOM 学习第七章 表单的扩展
2010/02/19 Javascript
jQuery EasyUI API 中文文档 - PropertyGrid属性表格
2011/11/18 Javascript
jquery网页元素拖拽插件效果及实现
2013/08/05 Javascript
JS将秒换成时分秒实现代码
2013/09/03 Javascript
js左侧三级菜单导航实例代码
2013/09/13 Javascript
js获取当前路径的简单示例代码
2014/01/08 Javascript
js+HTML5实现canvas多种颜色渐变效果的方法
2015/06/05 Javascript
微信小程序  生命周期详解
2016/10/27 Javascript
easyui messager alert 三秒后自动关闭提示的实例
2016/11/07 Javascript
jQuery实现手势解锁密码特效
2017/08/14 jQuery
Vue 2.0学习笔记之使用$refs访问Vue中的DOM
2017/12/19 Javascript
js实现点击展开隐藏效果(实例代码)
2018/09/28 Javascript
Node.js折腾记一:读指定文件夹,输出该文件夹的文件树详解
2019/04/20 Javascript
解决Layui 表格自适应高度的问题
2019/11/15 Javascript
使用Python编写Linux系统守护进程实例
2015/02/03 Python
编写Python脚本来获取mp3文件tag信息的教程
2015/05/04 Python
Python文件读取的3种方法及路径转义
2015/06/21 Python
python中scikit-learn机器代码实例
2018/08/05 Python
python 实现得到当前时间偏移day天后的日期方法
2018/12/31 Python
python lxml中etree的简单应用
2019/05/10 Python
Python 2种方法求某个范围内的所有素数(质数)
2020/01/31 Python
Python基于paramunittest模块实现excl参数化
2020/04/26 Python
如何从csv文件构建Tensorflow的数据集
2020/09/21 Python
CSS3实现圆角、阴影、透明效果并兼容各大浏览器
2014/08/08 HTML / CSS
Proenza Schouler官方网站:纽约女装和配饰品牌
2019/01/03 全球购物
澳大利亚家用电器在线商店:Billy Guyatts
2020/05/05 全球购物
网友共享的几个面试题关于Java和Unix等方面的
2016/09/08 面试题
简历中个人自我评价范文
2013/12/26 职场文书
党支部创先争优活动总结
2014/08/28 职场文书
2015年党建工作目标责任书
2015/05/08 职场文书
求职信如何撰写?
2019/05/22 职场文书
如何起草一份正确的合伙创业协议书?
2019/07/04 职场文书
Python 解决空列表.append() 输出为None的问题
2021/05/23 Python