ブートストラッププログレスバーを使用して、アップロードの進行状況をモーダルで表示する

グレイハンマー

私が構築しているc#MVCアプリケーションがあります。これは、フォームを表示し、ユーザーがいくつかのファイルをアップロードできるようにします。ユーザーが[送信]をクリックすると、進行状況バーが表示され、100%に設定されたモーダルが表示され、「お待ちください」というメッセージが表示されます。

アップロードプロセスの進行状況をキャプチャして、モーダルの進行状況バーに表示できるようにしたいと思います。

したがって、Googleで少し検索した後、この解決策を思いつきましたが、現在の状況にどのように適応させるかがわかりません。

これが私のコードです:

Index.cshtml

<h4>Please fill out the form below and select at least one file to upload.</h4>

@using (Html.BeginForm("Index", "Home", FormMethod.Post, new { enctype = "multipart/form-data", id = "upldFrm" }))
{
    <div class="row">
        <div class="col-md-2">
            <h5>Your Name:</h5>
        </div>
        <div class="col-md-4">
            <input type="text" name="uname" class="form-control" required placeholder="John Smith">
        </div>
    </div>
    <div class="row">
        <div class="col-md-2">
            <h5>Your Email:</h5>
        </div>
        <div class="col-md-4">
            <input type="email" name="email" class="form-control" required placeholder="[email protected]">
        </div>
    </div>
    <div class="row">
        <div class="col-md-2">
            <h5>Your Company:</h5>
        </div>
        <div class="col-md-4">
            <input type="text" name="company" class="form-control" required placeholder="Test Company, Inc">
        </div>
    </div>
    <div class="row">
        <div class="col-md-2">
            <h5>Choose file(s) to upload (Max 500MB):</h5>
        </div>
        <div class="col-md-4">
            <input name="files" type="file" id="files" multiple="multiple" class="form-control" required />
        </div>
    </div>
    <div class="row">
        <div class="col-md-2">
            <h5></h5>
        </div>
        <div class="col-md-4">
            <input id="sbmtBtn" type="submit" name="submit" value="Upload" class="btn btn-primary" data-toggle="modal" data-target="#myModal" />
        </div>
    </div>
}

<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h1>Uploading...</h1>
            </div>
            <div class="modal-body">
                Please wait while we are uploading your files
                <div class="progress">
                    <div class="progress-bar progress-bar-striped active" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100" style="width: 100%">
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
    $('sbmtBtn').on('click', function ()
    {
        $('#upldFrm').submit();
    });
</script>

これが私のコントローラーです

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Net.Mail;

namespace vidup.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {

            return View();
        }

        [HttpPost]
        public ActionResult Index(List<HttpPostedFileBase> files)
        {
            var userName = Request["uname"].ToString();
            var userEmail = Request["email"].ToString();
            var userCompany = Request["company"].ToString();
            ViewBag.Username = userName;
            ViewBag.UserCompany = userCompany;
            ViewBag.UserEmail = userEmail;
            int i = 0;

            var path = Path.Combine(Server.MapPath("~/Uploads"), userCompany, userName, DateTime.Now.ToString("MM-dd-yyyy h-mm-tt"));
            if (!Directory.Exists(path))
            {
                DirectoryInfo di = Directory.CreateDirectory(path);
            }

            foreach (HttpPostedFileBase item in files)
            {
                i++;
                if (item != null && item.ContentLength > 0)
                {
                    var fileName = Path.GetFileName(item.FileName);
                    var fullPath = Path.Combine(path, fileName);
                    ViewBag.Message3 = fileName;
                    ViewBag.Message4 = fullPath;
                    try
                    {
                        item.SaveAs(fullPath);
                        var fileCount = i + " File(s) uploaded successfully";
                        ViewBag.Message = fileCount;
                    }
                    catch (Exception e)
                    {
                        ViewBag.Message = e;
                    }
                }
                else
                {
                    ViewBag.Message = "No File selected";
                }
            }
            return View("Status");
        }

        public ActionResult Status()
        {
            return View();
        }

    }
}

編集:

提供した投稿からコードを追加しようとしましたが、エラーが発生します

Uncaught ReferenceError: formdata is not defined

これが私の見解です。なぜこのエラーが発生するのか、誰かに教えてもらえますか?またはそれを解決する方法は?

<div class="row">
        <div class="col-md-2">
            <h5>Choose file(s) to upload (Max 500MB):</h5>
        </div>
        <div class="col-md-4">
            <input name="files" type="file" id="files" multiple="multiple" class="form-control" required />
        </div>
    </div>
    <div class="row">
        <div class="col-md-2">
            <h5></h5>
        </div>
        <div class="col-md-4">
            <input id="sbmtBtn" name="submit" value="Upload" class="btn btn-primary" onclick="submitForm()"/>
        </div>
    </div>
}

<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h1>Uploading...</h1>
            </div>
            <div class="modal-body">
                Please wait while we are uploading your files
                <div class="progress">
                    <div class="progress-bar progress-bar-striped active" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100" style="width: 100%">
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
    function submitForm() {
        $('#myModal').modal('show');
        var file=document.getElementById('files').files[0];
        var formData = new FormData();
        formdata.append("file_name", file);
        ajax = new XMLHttpRequest();
        ajax.upload.addEventListener("progress", progressHandler, false);
        ajax.addEventListener("load", completeHandler, false);
        ajax.open("POST", '@Url.Action("Index","Home")', true)
        ajax.send(formdata);
    }

    function progressHandler(event){
        var percent = (event.loaded / event.total) * 100;
        $('.bar').width(percent);
    }

    function completeHandler(){
        $('#myModal').modal('hide');
        $('.bar').width(100);
    }

    //$('sbmtBtn').on('click', function ()
    //{
    //    $('#upldFrm').submit();
    //});
</script>
グレイハンマー

次のコードを使用してプログレスバーを取得しましたが、ファイルをアップロードするための作業をコントローラーに実行させました。

頭の中にこれらのスクリプトを含めました

<script src="~/Scripts/jquery-2.1.3.js"></script>
<script src="http://malsup.github.com/jquery.form.js"></script>
<script src="~/Scripts/bootstrap.js"></script>
<script src="~/Scripts/modernizr-2.8.3.js"></script>
<link href="~/Content/Site.css" rel="stylesheet" type="text/css" />
<link href="~/Content/bootstrap.css" rel="stylesheet" type="text/css" />

次に、フォームの本文とスクリプト。

@using (Ajax.BeginForm("Index", "Home", new AjaxOptions() { HttpMethod = "POST" }, new { enctype = "multipart/form-data" }))
    {
        <div class="row">
            <div class="col-md-2">
                <h5>Your Name:</h5>
            </div>
            <div class="col-md-4">
                <input type="text" name="uname" class="form-control" required placeholder="John Smith">
            </div>
        </div>
        <div class="row">
            <div class="col-md-2">
                <h5>Your Email:</h5>
            </div>
            <div class="col-md-4">
                <input type="email" name="email" class="form-control" required placeholder="[email protected]">
            </div>
        </div>
        <div class="row">
            <div class="col-md-2">
                <h5>Your Company:</h5>
            </div>
            <div class="col-md-4">
                <input type="text" name="company" class="form-control" required placeholder="Test Company, Inc">
            </div>
        </div>
        <div class="row">
            <div class="col-md-2">
                <h5>Choose file(s) to upload (Max 500MB):</h5>
            </div>
            <div class="col-md-4">
                <input name="files" type="file" id="files" multiple="multiple" class="form-control" required />
            </div>
        </div>
        <div class="row">
            <div class="col-md-2">
                <h5></h5>
            </div>
            <div class="col-md-4">
                <input id="sbmtBtn" type="submit" name="submit" value="Upload" class="btn btn-primary" />
            </div>
        </div>
    }

    <br />
    <div class="progress">
        <div class="progress-bar">0%</div>
    </div>

    <div id="status"></div>

    <script>
        (function () {
            var bar = $('.progress-bar');
            var percent = $('.progress-bar');
            var status = $('#status');

            $('form').ajaxForm({
                beforeSend: function () {
                    status.empty();
                    status.html("Please Wait While We Upload Your File(s)");
                    var percentValue = '0%';
                    bar.width(percentValue);
                    percent.html(percentValue);
                },
                uploadProgress: function (event, position, total, percentComplete) {
                    var percentValue = percentComplete + '%';
                    bar.width(percentValue);
                    percent.html(percentValue);
                },
                success: function (d) {
                    var percentValue = '100%';
                    bar.width(percentValue);
                    percent.html(percentValue);
                    $('#fu1').val('');
                    status.empty();
                    alert(d);
                },
                complete: function (xhr) {
                    status.html("You can Upload again or close this page.");
                }
            });
        })();
    </script>

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

プログレスバーにファイルのアップロードの進行状況を表示する方法-AmazonS3バケット

分類Dev

エスプレッソを使用して、進行状況ダイアログの下のビューをテストすることは可能ですか?

分類Dev

AzureストレージJavaScriptクライアント:Ionic / Angularを使用してアップロードの進行状況を追跡する方法は?

分類Dev

ブートストラップを使用してモーダルダイアログを表示する方法

分類Dev

javafx:プロセスの進行状況を表示するプログレスバー?

分類Dev

Android:HttpURLConnectionの進行状況コールバックを使用してCloudinaryに写真をアップロードする

分類Dev

Pythonを使用してGoogleドライブスクリプトにアップロードの進行状況を追加します

分類Dev

プログラムで進行状況のドローアブルを作成する

分類Dev

ブートストラッププログレスバーに進行状況が表示されませんか?

分類Dev

gsutil cpを使用してPowerShellスクリプトをGCPに実行すると、アップロードの進行状況が複数行に表示されます

分類Dev

C ++でのループの進行状況を表示するQMLでのプログレスバーの実装

分類Dev

更新パネルにファイルアップロードを使用して進行状況の更新を表示する

分類Dev

ブートストラッププログレスバー-進行状況に関係なくテキストを中央に配置します

分類Dev

Firebaseストレージへの画像のアップロードの進行状況を確認する方法

分類Dev

SSH.NETを使用してProgressBarにファイルアップロードの進行状況を表示する

分類Dev

Essenceフレームワークでファイルのアップロードの進行状況を表示する

分類Dev

アップロード画像の進行状況を表示マルチパート

分類Dev

Androidでレイアウトをリロードし、サークルの進行状況バーをプログラムで更新します

分類Dev

Blazorサーバー側を使用して、大きなファイルでコントローラーからクライアントへのファイルの進行状況のアップロードステータスを取得することは可能ですか?

分類Dev

JavascriptでFetchAPIを使用してファイルをアップロードし、進行状況を表示します

分類Dev

マルチプロセッシング:tqdmを使用して進行状況バーを表示する

分類Dev

C#HttpClientPostAsyncを使用してアップロードの進行状況を表示する方法

分類Dev

プログレッシブバーは進行状況を表示しません

分類Dev

AsyncTaskを使用してバックグラウンドサービス内にAndroidの進行状況ダイアログを追加し、致命的な例外を取得する

分類Dev

プロンプトをハイジャックせずにバックグラウンドプロセスから進行状況をエコーする

分類Dev

Swift3とAmazonSDKを使用してAmazonS3に画像をアップロードするためのアップロードの進行状況を表示する

分類Dev

リストからファイルをダウンロードして進行状況バーを表示する方法

分類Dev

PUTは、ストリームと進行状況を含むファイルのバイト範囲をアップロードします

分類Dev

Delphi:プログレスバーを使用してCreateProcessの進行状況を表示するにはどうすればよいですか?

Related 関連記事

  1. 1

    プログレスバーにファイルのアップロードの進行状況を表示する方法-AmazonS3バケット

  2. 2

    エスプレッソを使用して、進行状況ダイアログの下のビューをテストすることは可能ですか?

  3. 3

    AzureストレージJavaScriptクライアント:Ionic / Angularを使用してアップロードの進行状況を追跡する方法は?

  4. 4

    ブートストラップを使用してモーダルダイアログを表示する方法

  5. 5

    javafx:プロセスの進行状況を表示するプログレスバー?

  6. 6

    Android:HttpURLConnectionの進行状況コールバックを使用してCloudinaryに写真をアップロードする

  7. 7

    Pythonを使用してGoogleドライブスクリプトにアップロードの進行状況を追加します

  8. 8

    プログラムで進行状況のドローアブルを作成する

  9. 9

    ブートストラッププログレスバーに進行状況が表示されませんか?

  10. 10

    gsutil cpを使用してPowerShellスクリプトをGCPに実行すると、アップロードの進行状況が複数行に表示されます

  11. 11

    C ++でのループの進行状況を表示するQMLでのプログレスバーの実装

  12. 12

    更新パネルにファイルアップロードを使用して進行状況の更新を表示する

  13. 13

    ブートストラッププログレスバー-進行状況に関係なくテキストを中央に配置します

  14. 14

    Firebaseストレージへの画像のアップロードの進行状況を確認する方法

  15. 15

    SSH.NETを使用してProgressBarにファイルアップロードの進行状況を表示する

  16. 16

    Essenceフレームワークでファイルのアップロードの進行状況を表示する

  17. 17

    アップロード画像の進行状況を表示マルチパート

  18. 18

    Androidでレイアウトをリロードし、サークルの進行状況バーをプログラムで更新します

  19. 19

    Blazorサーバー側を使用して、大きなファイルでコントローラーからクライアントへのファイルの進行状況のアップロードステータスを取得することは可能ですか?

  20. 20

    JavascriptでFetchAPIを使用してファイルをアップロードし、進行状況を表示します

  21. 21

    マルチプロセッシング:tqdmを使用して進行状況バーを表示する

  22. 22

    C#HttpClientPostAsyncを使用してアップロードの進行状況を表示する方法

  23. 23

    プログレッシブバーは進行状況を表示しません

  24. 24

    AsyncTaskを使用してバックグラウンドサービス内にAndroidの進行状況ダイアログを追加し、致命的な例外を取得する

  25. 25

    プロンプトをハイジャックせずにバックグラウンドプロセスから進行状況をエコーする

  26. 26

    Swift3とAmazonSDKを使用してAmazonS3に画像をアップロードするためのアップロードの進行状況を表示する

  27. 27

    リストからファイルをダウンロードして進行状況バーを表示する方法

  28. 28

    PUTは、ストリームと進行状況を含むファイルのバイト範囲をアップロードします

  29. 29

    Delphi:プログレスバーを使用してCreateProcessの進行状況を表示するにはどうすればよいですか?

ホットタグ

アーカイブ