>  기사  >  웹 프론트엔드  >  JQuery 파일 업로드 플러그인은 파일 업로드 function_jquery를 구현합니다.

JQuery 파일 업로드 플러그인은 파일 업로드 function_jquery를 구현합니다.

WBOY
WBOY원래의
2016-05-16 15:10:131430검색

이유는 비슷하기 때문에 .net MVC에서의 구현을 간략하게 공유하겠습니다.

1. 모델 클래스 생성

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. 컨트롤러에서 해당 메소드를 구현합니다. 처리 로직이 상대적으로 복잡하고 수정하기가 너무 어렵습니다.

//----------------------------------------------------------------
    /// <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="ファイルを選択してください" readonly="readonly" />
      </div>
    </td>
    <td>
      <div style="width: 60px">
        <span class="btn btn-primary fileinput-button">
          <span>選 択</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"> 処理中、少々お待ちください</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("ファイルを選択してください");
            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>
}

√ 바로 그거예요
간단한 숙박 구현도 함께 제공됩니다
게시물 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;
}

자세한 내용은 다음과 같습니다.
입력의 accept 속성은 Excel만 읽고 싶기 때문에
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel

위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.