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 相关文章推荐
基于jquery的15款幻灯片插件
Apr 10 Javascript
javascript将相对路径转绝对路径示例
Mar 14 Javascript
javascritp添加url参数将参数加入到url中
Sep 25 Javascript
基于Jquery+div+css实现弹出登录窗口(代码超简单)
Oct 27 Javascript
详解Wondows下Node.js使用MongoDB的环境配置
Mar 01 Javascript
javascript时间戳和日期字符串相互转换代码(超简单)
Jun 22 Javascript
微信小程序 前端源码逻辑和工作流详解
Oct 08 Javascript
详解利用Angular实现多团队模块化SPA开发框架
Nov 27 Javascript
AngularJs返回前一页面时刷新一次前面页面的方法
Oct 09 Javascript
利用Vconsole和Fillder进行移动端抓包调试方法
Mar 05 Javascript
vue el-table实现自定义表头
Dec 11 Javascript
vue-cli中实现响应式布局的方法
Mar 02 Vue.js
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开发中常用的字符串操作函数
2011/02/08 PHP
如何利用PHP执行.SQL文件
2013/07/05 PHP
php中get_defined_constants函数用法实例分析
2015/05/12 PHP
Thinkphp模板标签if和eq的区别和比较实例分析
2015/07/01 PHP
php探针不显示内存解决方法
2019/09/17 PHP
获取当前网页document.url location.href区别总结
2008/05/10 Javascript
js取滚动条的尺寸的函数代码
2011/11/30 Javascript
JavaScript异步回调的Promise模式封装实例
2014/06/07 Javascript
JavaScript设计模式之外观模式实例
2014/10/10 Javascript
JS验证邮件地址格式方法小结
2015/12/01 Javascript
使用JavaScript脚本判断页面是否在微信中被打开
2016/03/06 Javascript
jQuery动画_动力节点节点Java学院整理
2017/07/04 jQuery
vue不通过路由直接获取url中参数的方法示例
2017/08/24 Javascript
浅谈es6语法 (Proxy和Reflect的对比)
2017/10/24 Javascript
vue + element-ui实现简洁的导入导出功能
2017/12/22 Javascript
js 实现在2d平面上画8的方法
2018/10/10 Javascript
Vue的生命周期操作示例
2019/09/17 Javascript
原生JS实现音乐播放器
2021/01/26 Javascript
[01:05:36]VP vs TNC Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
爬山算法简介和Python实现实例
2014/04/26 Python
Python给定一个句子倒序输出单词以及字母的方法
2018/12/20 Python
pandas实现to_sql将DataFrame保存到数据库中
2019/07/03 Python
Python简易版停车管理系统
2019/08/12 Python
DJango的创建和使用详解(默认数据库sqlite3)
2019/11/18 Python
Java爬虫技术框架之Heritrix框架详解
2020/07/22 Python
HTML5新特性 多线程(Worker SharedWorker)
2017/04/24 HTML / CSS
Philosophy美国官网:美国美容品牌
2016/08/15 全球购物
稀有和绝版书籍:Biblio.com
2017/02/02 全球购物
一套软件测试笔试题
2014/07/25 面试题
函授毕业自我鉴定
2013/12/19 职场文书
感恩的心主题班会
2015/08/12 职场文书
学生早退检讨书(范文)
2019/08/19 职场文书
redis实现共同好友的思路详解
2021/05/26 Redis
Pygame Rect区域位置的使用(图文)
2021/11/17 Python
MySQL为数据表建立索引的原则详解
2022/03/03 MySQL
使用Python开发冰球小游戏
2022/04/30 Python