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 在各个浏览器中执行的耐性
Apr 06 Javascript
jquery插件制作 图片走廊 gallery
Aug 17 Javascript
原生JavaScript实现连连看游戏(附源码)
Nov 05 Javascript
浅谈JavaScript中指针和地址
Jul 26 Javascript
jQuery在线选座位插件seat-charts特效代码分享
Aug 27 Javascript
教你如何终止JQUERY的$.AJAX请求
Feb 23 Javascript
ionic隐藏tabs的方法
Aug 29 Javascript
jQuery自定义元素右键点击事件(实现案例)
Apr 28 jQuery
vue.js实现刷新当前页面的方法教程
Jul 05 Javascript
如何把vuejs打包出来的文件整合到springboot里
Jul 26 Javascript
jQuery ajax - getScript() 方法和getJSON方法
May 14 jQuery
React实现动效弹窗组件
Jun 21 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
牡丹941资料
2021/03/01 无线电
php下将XML转换为数组
2010/01/01 PHP
PHP 获取远程文件内容的函数代码
2010/03/24 PHP
php流量统计功能的实现代码
2012/09/29 PHP
PHP闭包(Closure)使用详解
2013/05/02 PHP
利用PHP如何写APP接口详解
2016/08/23 PHP
PHP版单点登陆实现方案的实例
2016/11/17 PHP
PHP创建自己的Composer包方法
2018/04/09 PHP
PHP5.6.8连接SQL Server 2008 R2数据库常用技巧分析总结
2019/05/06 PHP
解决laravel id非自增 模型取回为0 的问题
2019/10/11 PHP
对google个性主页的拖拽效果的js的完整注释[转]
2007/04/10 Javascript
Javascript 实用小技巧
2010/04/07 Javascript
用jquery实现下拉菜单效果的代码
2010/07/25 Javascript
JS刷新框架外页面七种实现代码
2013/02/18 Javascript
javascript重写alert方法的实例代码
2013/03/29 Javascript
ExtJS判断IE浏览器类型的方法
2014/02/10 Javascript
JS不能跨域借助jquery获取IP地址的方法
2014/08/20 Javascript
JavaScript实现在标题栏上显示当前日期的方法
2015/03/19 Javascript
JavaScript通过this变量快速找出用户选中radio按钮的方法
2015/03/23 Javascript
javascript实现网页端解压并查看zip文件
2015/12/15 Javascript
javascript对象的相关操作小结
2016/05/16 Javascript
老生常谈的跨域处理
2017/01/11 Javascript
微信小程序实现留言板(Storage)
2018/11/02 Javascript
vue导航栏部分的动态渲染实例
2019/11/01 Javascript
Nuxt v-bind绑定img src不显示的解决
2019/12/05 Javascript
javascript设计模式 ? 组合模式原理与应用实例分析
2020/04/14 Javascript
用Python输出一个杨辉三角的例子
2014/06/13 Python
超实用的 30 段 Python 案例
2019/10/10 Python
Django中自定义查询对象的具体使用
2019/10/13 Python
简述python Scrapy框架
2020/08/17 Python
Python tkinter之Bind(绑定事件)的使用示例
2021/02/05 Python
编辑个人求职信范文
2013/09/21 职场文书
南京市纪委监察局整改方案
2014/09/16 职场文书
部队2014年终工作总结
2014/11/27 职场文书
孔庙导游词
2015/02/04 职场文书
《刷子李》教学反思
2016/02/20 职场文书