JQuery fileupload插件实现文件上传功能


Posted in Javascript onMarch 18, 2016

道理相通,我简单分享下在.net MVC下的实装。

1.制作Model类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace RCRS.WebApp.LG.EM.Models
{
 //----------------------------------------------------------------
 /// <summary>
 /// Import画面用
 /// </summary>
 //----------------------------------------------------------------
 public class tmp_UploadFile
 {
  /// <summary></summary>
  public HttpPostedFileBase FileName { get; set; }
 }
}

2.实装controller里的对应方法,我这个处理逻辑比较复杂,懒得修改了,反正就这个意思

//----------------------------------------------------------------
  /// <summary>
  /// アップロ?ド
  /// </summary>
  /// <returns></returns>
  //----------------------------------------------------------------
  [HttpPost]
  public virtual ActionResult UploadFile()
  {
   HttpPostedFileBase uploadedFile = Request.Files["FileName"];
   string message = "アップロ?ド失?·筏蓼筏俊?;
   bool isUploaded = false;
   string path = "";
   string dateTimeNow = DateTime.Now.ToString("yyMMdd-hhmmss");
   string userName = User.Identity.GetUserName();
   string uploadMsg = string.Empty;

   if (uploadedFile != null && uploadedFile.ContentLength != 0)
   {
    string pathForSaving = Server.MapPath("~/App_Data/Uploaded/");
    try
    {
     if (BsnssBihin.IsExcel(uploadedFile.FileName))
     {
      path = System.IO.Path.Combine(pathForSaving, dateTimeNow + "_" + uploadedFile.FileName);
      uploadedFile.SaveAs(path);
      isUploaded = BsnssBihin.UploadBihinChange(path, userName, ref uploadMsg);
      if (isUploaded)
      {
       message = "アップロ?ド成功しました!" + "\n" + uploadMsg;
       Logger.Info("[成功]?淦伐ⅴ氓抓愆`ド, " + dateTimeNow + ", " + "[" + userName + "]" + "[" + path + "]" + uploadMsg);
      }
      else
      {
       message = "アップロ?ド失?·筏蓼筏俊? + "\n" + uploadMsg;
       Logger.Info("[失???淦伐ⅴ氓抓愆`ド, " + dateTimeNow + ", " + "[" + userName + "]" + "["+path + "]" + uploadMsg);
      }
     }
     else
     {
      message = "ファイルの形式は不正です。";
     }
    }
    catch (Exception ex)
    {
     message = string.Format("失?·筏蓼筏? {0}", ex.Message);
     Logger.Info("[失???淦伐ⅴ氓抓愆`ド: " + ex.Message + dateTimeNow + ", " + "[" + userName + "]" + "[" + path + "]");
    }
   }
   return Json(new { isUploaded = isUploaded, message = message }, "text/html");
  }

3.页面的实装

@model RCRS.WebApp.LG.EM.Models.tmp_UploadFile
<table align="center" style="margin-bottom:200px">
 <tr>
  <td>
   <div style="width:470px">
    <input type="text" id="tbx-file-path" value="ファイルを??kしてください" readonly="readonly" />
   </div>
  </td>
  <td>
   <div style="width: 60px">
    <span class="btn btn-primary fileinput-button">
     <span>? ?k</span>
     @Html.TextBoxFor(m => m.FileName, new { id = "file-upload", type = "file", accept = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" })
    </span>
   </div>
  </td>
  <td>
   <div style="width:60px">
    <a class="btn btn-primary" href="#" id="hl-start-upload">アップロ?ド</a>
   </div>
  </td>
 </tr>
</table>

<div id="loadingOver" class="loadingOver"></div>
<div id="dvloader" class="dvloader">
 <span class="label label-info" style="align-content:center"> ?I理中、少々お待ちください</span><br />
 <br />
 <img id="loadingGif" src="../Content/img/loader.gif" alt="" />
</div>

@section scripts{
 @Scripts.Render("~/bundles/jquery")
 @Scripts.Render("~/bundles/jqueryui")
 @Scripts.Render("~/bundles/jqueryval")
 @Scripts.Render("~/bundles/common")
 @Scripts.Render("~/bundles/fileupload")
 <script type="text/javascript">
  var data_upload;
  $(document).ready(function () {
   'use strict';
   $('#file-upload').fileupload({
    url: '../Bihin/UploadFile',
    dataType: 'json',
    add: function (e, data) {
     data_upload = data;
    },
    done: function (event, data) {
     if (data.result.isUploaded) {
      $("#tbx-file-path").val("ファイルを??kしてください");
      data_upload = "";
     }

     $("#dvloader").css("display", "none");
     $("#loadingOver").css("display", "none");

     alert(data.result.message);
    },
    fail: function (event, data) {
     data_upload = "";
     if (data.files[0].error) {

      $("#dvloader").css("display", "none");
      $("#loadingOver").css("display", "none");

      alert(data.files[0].error);
     }
    }
   });
  });

  $("#hl-start-upload").on('click', function () {
   if (data_upload) {
    $("#dvloader").css("display", "block");
    $("#loadingOver").css("display", "block");
    data_upload.submit();
   }
   return false;
  });

  $("#file-upload").on('change', function () {
   $("#tbx-file-path").val(this.files[0].name);
  });

  </script>
}

√,就是这个样子
还附赠了一个简易loding的实现
贴出CSS代码:

.dvloader {
 display:none;
 position:absolute;
 top:40%;
 left:40%;
 width:20%;
 height:20%;
 z-index:1001;
 text-align:center;
 font-size:1.5em;
}

.loadingOver {
 display:none;
 position:absolute;
 top:0;
 left:0;
 width:100%;
 height:100%;
 background-color:#f5f5f5;
 opacity:0.5;
 z-index:1000;
}

这里,多说一嘴:
关于input 的accept属性,这里只想读入Excel,所以
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel

更多精彩内容,请点击《jQuery上传操作汇总》,进行深入学习和研究。

以上就是本文的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
学习ExtJS table布局
Oct 08 Javascript
基于jQuery的日期选择控件
Oct 27 Javascript
不使用jquery实现js打字效果示例分享
Jan 19 Javascript
Node.js(安装,启动,测试)
Jun 09 Javascript
jQuery响应鼠标事件并隐藏与显示input默认值
Aug 24 Javascript
jQuery的css()方法用法实例
Dec 24 Javascript
javascript算法题:求任意一个1-9位不重复的N位数在该组合中的大小排列序号
Apr 01 Javascript
node.js实现回调的方法示例
Mar 01 Javascript
vue项目使用微信公众号支付总结及遇到的坑
Oct 23 Javascript
微信小程序如何实现全局重新加载
Jun 05 Javascript
微信接入之获取用户头像的方法步骤
Sep 23 Javascript
vue+vant实现商品列表批量倒计时功能
Jan 13 Javascript
javascript移动开发中touch触摸事件详解
Mar 18 #Javascript
使用JavaScript为Kindeditor自定义按钮增加Audio标签
Mar 18 #Javascript
基于jQuery实现收缩展开功能
Mar 18 #Javascript
基于javascript显示当前时间以及倒计时功能
Mar 18 #Javascript
jQuery.deferred对象使用详解
Mar 18 #Javascript
JS中的二叉树遍历详解
Mar 18 #Javascript
简述JavaScript提交表单的方式 (Using JavaScript Submit Form)
Mar 18 #Javascript
You might like
PHP 七大优势分析
2009/06/23 PHP
PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
2014/06/12 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(一)
2014/06/23 PHP
php文件类型MIME对照表(比较全)
2016/10/07 PHP
日期函数扩展类Ver0.1.1
2006/09/07 Javascript
JavaScript国旗变换效果代码
2008/08/13 Javascript
jQuery 1.5 源码解读 面向中高阶JSER
2011/04/05 Javascript
js改变鼠标的形状和样式的方法
2014/03/31 Javascript
JavaScript的Polymer框架中dom-repeat与VM的相关操作
2015/07/29 Javascript
跟我学习javascript的最新标准ES6
2015/11/20 Javascript
JS+CSS实现DIV层的展开、收缩效果
2016/01/28 Javascript
原生js实现百叶窗效果及原理介绍
2016/04/12 Javascript
JS中from 表单序列化提交的代码
2017/01/20 Javascript
vue2.0使用Sortable.js实现的拖拽功能示例
2017/02/21 Javascript
Javascript 链式作用域详细介绍
2017/02/23 Javascript
基于angular-utils-ui-breadcrumbs使用心得(分享)
2017/11/03 Javascript
vue自动添加浏览器兼容前后缀操作
2020/08/13 Javascript
Node.js 中判断一个文件是否存在
2020/08/24 Javascript
[01:00:35]2018DOTA2亚洲邀请赛3月30日B组 EffcetVSMineski
2018/03/31 DOTA
Python 命令行参数sys.argv
2008/09/06 Python
分析在Python中何种情况下需要使用断言
2015/04/01 Python
使用python遍历指定城市的一周气温
2017/03/31 Python
python引入导入自定义模块和外部文件的实例
2017/07/24 Python
Python实现矩阵转置的方法分析
2017/11/24 Python
python实现xlsx文件分析详解
2018/01/02 Python
浅析PHP与Python进行数据交互
2018/05/15 Python
Python爬虫之Selenium实现关闭浏览器
2020/12/04 Python
网站性能延迟加载图像的五种技巧(小结)
2020/08/13 HTML / CSS
青年教师典范事迹材料
2014/01/31 职场文书
业务内勤岗位职责
2014/04/30 职场文书
学雷锋宣传标语
2014/06/25 职场文书
食品科学与工程专业毕业生求职信范文
2014/07/21 职场文书
医院领导班子四风对照检查材料
2014/09/27 职场文书
一小时迅速入门Mybatis之bind与多数据源支持 Java API
2021/09/15 Javascript
MySQL修改默认引擎和字符集详情
2021/09/25 MySQL
bose降噪耳机音能消除人声吗
2022/04/19 数码科技