實用ExtJS教程100例-009:ExtJS Form無刷新文件上傳


文件上傳在Web程序開發中必不可少,ExtJS Form中有一個filefield字段,用來選擇文件並上傳。今天我們來演示一下如何通過filefield實現ExtJS Form無刷新的文件上傳。

首先,我們創建一個Form,它包含一個filefield字段

然后,我們通過Form的submit方法進行提交,此時,ExtJS會自動判斷,如果Form中包含filefield字段,Form的method會設置為post

最后,我們通過服務器接收form提交的數據,並返回一段json字符串

ExtJS Form代碼如下:

Ext.create("Ext.form.FormPanel", {
    title: "ExtJS 無刷新文件上傳",
    width: 350,
    height: 300,
    x: 30,
    y: 30,
    layout: "form",
    bodyPadding: "5",
    defaultType: "textfield",
    fieldDefaults: { labelAlign: "left", labelWidth: 55 },
    items: [
        { xtype: "filefield", name: "File", fieldLabel: "選擇文件", buttonText: "瀏覽", allowBlank: false }
    ],
    buttons: [
        {
            text: "上傳",
            handler: function () {
                var formCmp = this.up("form");
                if (!formCmp.isValid()) return;    //驗證未通過,返回

                formCmp.submit({
                    url: "UploadFileReceiver",
                    method: "POST",
                    waitMsg: '正在上傳...',
                    success: function (form, action) {
                        Ext.MessageBox.alert("提示", action.result.message);
                    },
                    failure: function (form, action) {
                        switch (action.failureType) {
                            case Ext.form.action.Action.CLIENT_INVALID:
                                Ext.Msg.alert('失敗', 'Form fields may not be submitted with invalid values');
                                break;
                            case Ext.form.action.Action.CONNECT_FAILURE:
                                Ext.Msg.alert('失敗', 'Ajax communication failed');
                                break;
                            case Ext.form.action.Action.SERVER_INVALID:
                                Ext.Msg.alert('失敗', action.result.message);
                        }
                    }
                });
            }
        }
    ],
    renderTo: "container"
});

代碼的生成的界面如下

image

點擊瀏覽按鈕,選擇文件,然后點擊上傳按鈕即可。

我們服務器段的代碼如下:

Response.ContentType = "text/json";

if (Request.Files.Count == 0)
{
    var result = new { success = false, message = "請選擇文件" };
    var strResultContent = Json.Encode(result);
    Response.Write(strResultContent);
}
else
{
    var file = Request.Files[0];
    var result = new { success = true, message = "服務器接收到上傳的文件,文件名:" + Path.GetFileName(file.FileName) };
    var strResultContent = Json.Encode(result);
    Response.Write(strResultContent);
}

首先判斷,如果不包含文件,則直接返回json數據。

如果包含文件,我們獲取到文件名,並返回成功的json數據。

當我們上傳一個文件的時候,會看到如下信息

image

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM