zoukankan      html  css  js  c++  java
  • 实用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 无刷新文件上传",
         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

     

  • 相关阅读:
    jmeter的基本使用过程
    selenide UI自动化进阶二 pageObject实现页面管理
    Page Object 设计模式介绍
    自动化测试元素查找利器firepath介绍
    selenide 自动化UI测试中Configuration全局配置项目
    selenide 自动化测试进阶一: 查找元素和相关操作
    Selenide 简单实现自动化测试
    python操作MySQL数据库
    一次验证手机号固话号 正则表达式
    算法入门刷题笔记 算法竞赛入门经典++第六章例题 6-6--6-9,6-12,6-14,6-15 树与二叉树
  • 原文地址:https://www.cnblogs.com/youring2/p/extjs-100-examples-form-async-upload-file.html
Copyright © 2011-2022 走看看