基于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 相关文章推荐
简单JS代码压缩器
Oct 12 Javascript
jquery插件splitScren实现页面分屏切换模板特效
Jun 16 Javascript
javascript中html字符串转化为jquery dom对象的方法
Aug 27 Javascript
使用jquery datatable和bootsrap创建表格实例代码
Mar 17 Javascript
Map.vue基于百度地图组件重构笔记分享
Apr 17 Javascript
js jquery 获取某一元素到浏览器顶端的距离实现方法
Sep 05 jQuery
详解@Vue/Cli 3 Invalid Host header 错误解决办法
Jan 02 Javascript
微信小程序实现同一页面取值的方法分析
Apr 30 Javascript
微信小程序导入Vant报错VM292:1 thirdScriptError的解决方法
Aug 01 Javascript
用js限制网页只在微信浏览器中打开(或者只能手机端访问)
Dec 24 Javascript
vue 遮罩层阻止默认滚动事件操作
Jul 28 Javascript
Vue指令实现OutClick的示例
Nov 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 CURL模拟GET及POST函数代码
2010/04/25 PHP
PHP+SQL 注入攻击的技术实现以及预防办法
2010/12/29 PHP
深入理解:XML与对象的序列化与反序列化
2013/06/08 PHP
php 备份数据库代码(生成word,excel,json,xml,sql)
2013/06/23 PHP
ThinkPHP CURD方法之table方法详解
2014/06/18 PHP
使用URL传输SESSION信息
2015/07/14 PHP
PhpStorm terminal无法输入命令的解决方法
2016/10/09 PHP
PHP7下协程的实现方法详解
2017/12/17 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
数理公式,也可以这么唯美
2021/03/10 无线电
经典的解除许多网站无法复制文字的绝招
2006/12/31 Javascript
jQuery最佳实践完整篇
2011/08/20 Javascript
『jQuery』名称冲突使用noConflict方法解决
2013/04/22 Javascript
javascript-简单的日历实现及Date对象语法介绍(附图)
2013/05/30 Javascript
JS限制Textarea文本域字符个数的具体实现
2013/08/02 Javascript
基于编写jQuery的无缝滚动插件
2014/08/02 Javascript
node.js中的fs.realpath方法使用说明
2014/12/16 Javascript
layui弹出层效果实现代码
2017/05/19 Javascript
ES6解构赋值的功能与用途实例分析
2017/10/31 Javascript
对TypeScript库进行单元测试的方法
2019/07/18 Javascript
Vue实现push数组并删除的例子
2019/11/01 Javascript
状态机的概念和在Python下使用状态机的教程
2015/04/11 Python
python 列表,数组和矩阵sum的用法及区别介绍
2018/06/28 Python
pytorch中的embedding词向量的使用方法
2019/08/18 Python
Win下PyInstaller 安装和使用教程
2019/12/25 Python
Mac中PyCharm配置Anaconda环境的方法
2020/03/04 Python
python利用tkinter实现图片格式转换的示例
2020/09/28 Python
python装饰器代码深入讲解
2021/03/01 Python
运动鞋、足球鞋和慕尼黑球衣:Sport Münzinger
2019/08/26 全球购物
大宝sod蜜广告词
2014/03/21 职场文书
银行柜员求职自荐书
2014/06/18 职场文书
传播学专业毕业生自荐书
2014/07/01 职场文书
老干部工作汇报材料
2014/10/28 职场文书
教师群众路线学习心得体会
2014/11/04 职场文书
一年级语文下册复习计划
2015/01/17 职场文书
司法廉洁教育心得体会
2016/01/20 职场文书