基于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 使用手册(六)
Sep 23 Javascript
Jquery Ajax学习实例3 向WebService发出请求,调用方法返回数据
Mar 16 Javascript
cloudgamer出品ImageZoom 图片放大效果
Apr 01 Javascript
网页右键ie不支持event.preventDefault和event.returnValue (需要加window)
Feb 22 Javascript
简单实例处理url特殊符号&amp;处理(2种方法)
Apr 02 Javascript
JS获取图片高度宽度的方法分享
Apr 17 Javascript
在JavaScript中处理时间之setMinutes()方法的使用
Jun 11 Javascript
JavaScript截取指定长度字符串点击可以展开全部代码
Dec 04 Javascript
Javascript基础教程之比较null和undefined值
May 16 Javascript
AngularJs表单验证实例详解
May 30 Javascript
javascript实现简单打字游戏
Oct 29 Javascript
微信小程序开发之获取用户手机号码(php接口解密)
May 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添加MySQL数据记录代码
2008/06/07 PHP
PHPExcel在linux环境下导出报500错误的解决方法
2017/01/26 PHP
php 函数使用可变数量的参数方法
2017/05/02 PHP
详解php几行代码实现CSV格式文件输出
2017/07/01 PHP
强悍无比的WEB开发好助手FireBug(Firefox Plugin)
2007/01/16 Javascript
jquery $.ajax入门应用二
2008/11/19 Javascript
javascript中的变量作用域以及变量提升详细介绍
2013/10/24 Javascript
JavaScript利用正则表达式去除日期中的-
2014/06/09 Javascript
Web表单提交之disabled问题js解决方法
2015/01/13 Javascript
jQuery及JS实现循环中暂停的方法
2015/02/02 Javascript
AngularJS身份验证的方法
2016/02/17 Javascript
基于KO+BootStrap+MVC实现的分页控件代码分享
2016/11/07 Javascript
浅谈Node.js:fs文件系统模块
2016/12/08 Javascript
JavaScript循环_动力节点Java学院整理
2017/06/28 Javascript
详解vue.js根据不同环境(正式、测试)打包到不同目录
2018/07/13 Javascript
基于vue中keep-alive缓存问题的解决方法
2018/09/21 Javascript
Bootstrap的aria-label和aria-labelledby属性实例详解
2018/11/02 Javascript
TypeScript开发Node.js程序的方法
2019/04/30 Javascript
node学习笔记之读写文件与开启第一个web服务器操作示例
2019/05/29 Javascript
Vue解决移动端弹窗滚动穿透问题
2020/12/15 Vue.js
three.js如何实现3D动态文字效果
2021/03/03 Javascript
[01:20:06]TNC vs VG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
pandas实现选取特定索引的行
2018/04/20 Python
python中logging模块的一些简单用法的使用
2019/02/22 Python
Python通过TensorFLow进行线性模型训练原理与实现方法详解
2020/01/15 Python
Python开发.exe小工具的详细步骤
2021/01/27 Python
纯CSS3实现Material Design效果
2017/03/09 HTML / CSS
CSS3 实现穿梭星空动画
2020/11/13 HTML / CSS
bareMinerals官网:矿物质化妆品和护肤品
2018/02/04 全球购物
STP的判定过程
2012/10/01 面试题
文明礼仪事迹材料
2014/01/09 职场文书
送温暖献爱心活动总结
2014/07/08 职场文书
2015年社区卫生工作总结
2015/04/21 职场文书
2015年青年志愿者协会工作总结
2015/04/27 职场文书
学习心得体会
2019/06/20 职场文书
python glom模块的使用简介
2021/04/13 Python