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 相关文章推荐
javascript add event remove event
Apr 07 Javascript
js文本框输入点回车触发确定兼容IE、FF等
Nov 19 Javascript
jQuery检测某个元素是否存在代码分享
Jul 09 Javascript
jQuery实现自定义checkbox和radio样式
Jul 13 Javascript
jQuery 局部div刷新和全局刷新方法总结
Oct 05 Javascript
移动端滑动插件Swipe教程
Oct 16 Javascript
JS实现批量上传文件并显示进度功能
Jun 27 Javascript
详解jquery插件jquery.viewport.js学习使用方法
Sep 08 jQuery
Redux实现组合计数器的示例代码
Jul 04 Javascript
vue select选择框数据变化监听方法
Aug 24 Javascript
js实现unicode码字符串与utf8字节数据互转详解
Mar 21 Javascript
javascript移动端 电子书 翻页效果实现代码
Sep 07 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 提速工具eAccelerator 配置参数详解
2010/05/16 PHP
php中防止恶意刷新页面的代码小结
2012/10/31 PHP
php错误级别的设置方法
2013/06/17 PHP
PHP函数strip_tags的一个bug浅析
2014/05/22 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
JavaScript基础篇之变量作用域、传值、传址的简单介绍与实例
2013/06/29 Javascript
js 鼠标移动显示图片的简单实例
2013/12/25 Javascript
JavaScript将数据转换成整数的方法
2014/01/04 Javascript
JavaScript变量声明详解
2014/11/27 Javascript
js控制li的隐藏和显示实例代码
2016/10/15 Javascript
基于jQuery实现定位导航位置效果
2017/11/15 jQuery
vue如何通过id从列表页跳转到对应的详情页
2018/05/01 Javascript
Vue模板语法中数据绑定的实例代码
2019/05/17 Javascript
layer.open 获取不到表单信息的解决方法
2019/09/26 Javascript
vue+axios全局添加请求头和参数操作
2020/07/24 Javascript
实用的 vue tags 创建缓存导航的过程实现
2020/12/03 Vue.js
[01:05:30]VP vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python中dictionary items()系列函数的用法实例
2014/08/21 Python
Python3读取Excel数据存入MySQL的方法
2018/05/04 Python
python实现猜数字小游戏
2020/03/24 Python
CSS3实现DIV圆角效果完整代码
2012/10/10 HTML / CSS
草莓网化妆品加拿大网站:Strawberrynet Canada
2016/09/20 全球购物
美国健康和保健平台:healtop
2020/07/02 全球购物
就业推荐自我鉴定
2013/10/06 职场文书
《王二小》教学反思
2014/02/27 职场文书
奥巴马竞选演讲稿
2014/05/15 职场文书
教师一帮一活动总结
2014/07/08 职场文书
全国法制宣传日活动总结2014
2014/11/01 职场文书
2014年幼儿园小班工作总结
2014/12/04 职场文书
2015年国税春训心得体会
2015/03/09 职场文书
社区干部培训心得体会
2016/01/06 职场文书
Python实现随机生成迷宫并自动寻路
2021/06/13 Python
MySQL中的隐藏列的具体查看
2021/09/04 MySQL
分享提高 Python 代码的可读性的技巧
2022/03/03 Python
UNION CREATIVE《Re:从零开始的异世界生活》雷姆手办
2022/03/20 日漫