配置使用bootstrap-fileinput

来源:https://www.cnblogs.com/yuanxinSix/archive/2018/06/01/9122913.html
-Advertisement-
Play Games

bootstrap-fileinput文件如下: 1.在項目中引用這三個文件,這裡我是使用了BundleConfig,和你根據路徑訪問效果是一樣的 2.編寫input元素 <input type="file" name="img" id="img" class="file-loading" mult ...


bootstrap-fileinput文件如下:

1.在項目中引用這三個文件,這裡我是使用了BundleConfig,和你根據路徑訪問效果是一樣的

2.編寫input元素

 <input type="file" name="img" id="img" class="file-loading" multiple=""/>

例如我這裡,

 <div class="form-group">
                    <div class="col-md-3">
                        <div class="label-wrapper">
                            @Html.LabelFor(model => model.ProductImgLink, new { @class = "control-label" })
                            <div class="ico-help">
                                <i class="fa fa-question-circle"></i>
                            </div>
                        </div>
                    </div>
                    <div class="col-md-9">
                        @Html.HiddenFor(model => model.ProductImgLink)
                       <input type="file" name="img" id="img" class="file-loading" multiple=""/>
                        @Html.ValidationMessageFor(model => model.ProductImgLink)
                    </div>
                </div>

3.載入上傳插件我封裝成jquery插件,方便其他地方同一調用

jQuery.extend({
UploadImg: function ($control, $input, uploadUrl, customOption) {
        var option = {
            language: 'zh', //設置語言
            uploadUrl: uploadUrl, //上傳的地址
            allowedFileExtensions: ['jpg', 'gif', 'png'], //接收的文件尾碼
            showUpload: true, //是否顯示上傳按鈕
            showCaption: false, //是否顯示標題
            browseClass: "btn btn-primary", //按鈕樣式     
            dropZoneEnabled: false,
            //dropZoneEnabled: false,//是否顯示拖拽區域
            //minImageWidth: 50, //圖片的最小寬度
            //minImageHeight: 50,//圖片的最小高度
            //maxImageWidth: 1000,//圖片的最大寬度
            //maxImageHeight: 1000,//圖片的最大高度
            maxFileSize: 0,//單位為kb,如果為0表示不限制文件大小
            minFileCount: 1,
            maxFileCount: 10, //表示允許同時上傳的最大文件個數
            enctype: 'multipart/form-data',
            validateInitialCount: true,
            previewFileIcon: "<i class='glyphicon glyphicon-king'></i>",
            msgFilesTooMany: "選擇上傳的文件數量({n}) 超過允許的最大數值{m}!",
        };
        if (customOption != null && customOption != undefined) {
            $.extend(option, customOption);
        }
        //初始化上傳控制項的樣式
        $control.fileinput(option);
        //上傳前
        $control.on('filepreupload', function (event, data, previewId, index) {

        });
        //導入文件上傳完成之後的事件
        $control.on("fileuploaded", function (event, data, previewId, index) {
            if (data.response.ResultType === 0) {
                $input.val(data.response.Message);
            }
            else {
                toastr.error(data.response.Message);
            }
        });
        //非同步上傳錯誤結果處理
        $control.on("fileerror", function (event, data, msg) {
            toastr.error("網路錯誤,請重新提交");
        });
        //同步上傳成功結果處理
        $control.on('filebatchuploadsuccess', function (event, data, previewId, index) {
            if (data.response.ResultType === 0) {
                $input.val(data.response.Message);
            }
            else {
                toastr.error(data.response.Message);
            }
        });
        //同步上傳錯誤結果處理
        $control.on('filebatchuploaderror', function (event, data, msg) {
            toastr.error("網路錯誤,請重新提交");
        });
        //移除按鈕事件
        $control.on("filecleared", function (event, data, msg) {
            $input.val('');
        });
    }
});

3.載入插件方法 這裡的#img元素是綁定上傳插件的html元素,#ProductImgLink是在後臺方法成功保存後返迴文件的名稱用於保存數據

   $.UploadImg($("#img"), $("#ProductImgLink"), actionUrl, null);

4.後臺保存文件方法

/// <summary>
        /// 上傳圖片到管理系統的文件夾中
        /// </summary>
        /// <param name="name">文件夾名稱</param>
        /// <returns></returns>
        [HttpPost]
        public ActionResult UploadFiles(string name)
        {
            var files = Request.Files;
            if (files != null && files.Count > 0)
            {
                StringBuilder fileNames=new StringBuilder();
                for (int i = 0; i < files.Count; i++)
                {
                    var file = files[i];
                    string fileName = DateTime.Now.ToString("yyyyMMddHHmmssffff") + file.FileName;
                    string path = Server.MapPath("~/Areas/Admin/Content/admin/adminImg" + name);
                    if (!Directory.Exists(path)) Directory.CreateDirectory(path);
                    string filePath = path + "/" + fileName;
                    file.SaveAs(filePath);
                    fileNames.AppendFormat(name+"/"+ fileName + ";");
                }
               
                fileNames = fileNames.Remove(fileNames.Length - 1, 1);
                return Json(new OperationResult(OperationResultType.Success, fileNames.ToString()));
            }
            return Json(new OperationResult(OperationResultType.Error, "上傳失敗"));
        }

我這裡用了批量保存文件的方法,比如你在頁面添加了多個圖片,點擊上傳,會一次把這些圖片全部傳給後臺,這個方法只適用於同步上傳文件才有效果,所以你初始化插件的時候還需要設置(使用同步,多個圖片只會調用一次後臺方法,使用非同步多個圖片會多次調用後臺方法)

  var option = {
            uploadAsync: false,
        };
$.UploadImg($("#img"), $("#ProductImgLink"), actionUrl, option);

拓展:在編輯的時候載入保存的圖片,預覽圖片,使用參數 : initialPreview

  var imgArry = new Array();
 imgArry.push('<img  src="文件保存的路徑" style="width:auto;height:auto;max-width:100%;max-height:100%;" class="file-preview-image kv-preview-data rotate-1"/>');
var option = { initialPreview: imgArry, };

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ProGuard介紹 ProGuard是一個Java類文件壓縮器,優化器,混淆器和預先文件驗證器。 壓縮步驟檢測和刪除未使用的類,欄位,方法和屬性。 優化步驟分析和優化方法的位元組碼。 混淆步驟使用短無意義的名稱重命名剩餘的類,欄位和方法。 這些步驟使代碼更小,更高效,更難以進行逆向工程。 最終的預驗 ...
  • 1、標準廣播:是一種完全非同步執行的廣播,在廣播發出之後,所有的廣播接收器幾乎會在同一時刻接收到這條廣播信息,它們之間沒有先後順序。效率高、無法被截斷。 2、有序廣播:是一種同步執行的廣播,在廣播發出後,同一時刻只會有一個廣播接收器能夠接收到這條廣播,當這個廣播接收器中的邏輯執行完畢後,廣播才會繼續傳 ...
  • #define KColorRandomColor [UIColor colorWithRed:arc4random()%255/255.0 green:arc4random()%255/255.0 blue:arc4random()%255/255.0 alpha:1.0] ...
  • 卸載手機上的相應APP即可 ...
  • 一,新建立一個工程,Hello,如圖所示。 二,Xcode >New >File >FirstViewController >選中Also create XIB file >Next.如圖所示。 三,如下圖所示。 四,在AppDelegate.m中輸入如下代碼 : 五,在FristViewContr ...
  • 關於ajax的名字 ajax 的全稱是Asynchronous JavaScript and XML,其中,Asynchronous 是非同步的意思,它有別於傳統web開發中採用的同步的方式。 關於同步和非同步 非同步傳輸是面向字元的傳輸,它的單位是字元;而同步傳輸是面向比特的傳輸,它的單位是楨,它傳輸的 ...
  • 一、開發原因 之前公司用一些線上的轉短地址網站,但出來的的地址輸入沒規則,輸入太麻煩了,而且掃碼還需要安裝一個掃碼的軟體,在一個就是不能轉換本地代理的地址(例:http://192.168.1.200:8080),心累。正好公司有個閑置的電腦做伺服器,想著幹嘛不搞個本地的轉短地址工具,這樣可以隨意設 ...
  • 浮動四大特性 * 浮動的元素脫標 * 脫離標準流,漂浮,遮蓋標準流下的元素 * 浮動的元素互相貼靠 * 沒有足夠空間互相貼靠時,往邊靠 * 浮動的元素有“字圍”(文字圍繞)效果 * 所謂字圍效果,當div浮動,p不浮動,div遮蓋住了p,div的層級提高,但是p中的文字不會被遮蓋,此時就形成了... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...