文件上传在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"
});

代码的生成的界面如下

点击浏览按钮,选择文件,然后点击上传按钮即可。

我们服务器段的代码如下:

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数据。

当我们上传一个文件的时候,会看到如下信息

 

实用ExtJS教程100例-009:ExtJS Form无刷新文件上传的更多相关文章

  1. 使用PHP和HTML5 FormData实现无刷新文件上传教程

    无刷新文件上传是一个常见而又有点复杂的问题,常见的解决方案是构造 iframe 方式实现. 在 HTML5 中提供了一个 FormData 对象 API,通过 FormData 可以方便地构造一个表单 ...

  2. 实用ExtJS教程100例-001:开天辟地的Hello World

    ExtJS功能繁多,要想彻底的了解确实很困难.作为初学者,如何能找到一条快速的通道呢?我觉得,如果你有Javascript的基础,那就不要惧怕ExtJS的复杂,从动手开始,遇到问题,解决问题,积累经验 ...

  3. Ajax(form表单文件上传、请求头之contentType、Ajax传递json数据、Ajax文件上传)

    form表单文件上传 上菜 file_put.html <form action="" method="post" enctype="multi ...

  4. jquery.form 兼容IE89文件上传

    导入部分 <script type="text/javascript" src="js/jquery-1.8.3.min.js" charset=&quo ...

  5. form表单文件上传 servlet文件接收

    需要导入jar包 commons-fileupload-1.3.2.jar commons-io-2.5.jar Upload.Jsp代码 <%@ page language="jav ...

  6. Django 基于Ajax & form 简单实现文件上传

    前端实现 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="U ...

  7. Spring MVC-表单(Form)标签-文件上传(File Upload)示例(转载实践)

    以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_upload.htm 说明:示例基于Spring MVC 4.1.6. 以下示例显 ...

  8. form表单文件上传提交且接口回调显示提交成功

    前端: <form method="post" enctype="multipart/form-data" id="formSubmit&quo ...

  9. SSM+form表单文件上传

    这里介绍SSM如何配置上传文件 配置springmvc.xml: <!--配置上传下载--> <bean id="multipartResolver" class ...

随机推荐

  1. JavaScript——HashMap实现

    本文版权归博客园和作者吴双本人共同所有,转载和爬虫请注明原文链接博客园蜗牛 cnblogs.com\tdws . 首先提供一种获取hashCode的方法,是一种比较受欢迎的方式,该方法参照了一位园友的 ...

  2. VirtualBox 安装 Gentoo 小记

    因为需求,尝试了一下在 VirtualBox 安装 Gentoo.虽然多年前就折腾过多次 LFS,但 Gentoo 并没有太多尝试.这次确实也经历了种种波折,到最后总算成功了,大致跨度为3天.本来手上 ...

  3. 【PAT】1032 Sharing (25)(25 分)

    1032 Sharing (25)(25 分) To store English words, one method is to use linked lists and store a word l ...

  4. linux设置最大打开文件数

    一.查看当前用户对进程打开文件最大数的限制 $ ulimit -a | grep open 二.系统对进程打开文件最大数是如何限制的 先来看man的一段解析: /proc/sys/fs/file-ma ...

  5. 【转载】【收藏】Github上免费的编程教程【作者Victor Felder】

    原链接:https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books-zh. ...

  6. 004.iSCSI客户端配置示例-Linux

    一 安装软件 [root@system2 ~]# yum -y install iscsi-initiator-utils 二 修改相关参数 [root@system2 ~]# vi /etc/isc ...

  7. RPO漏洞学习

    不能直接复制markdown上来真的是痛苦,图片还要手动上传. 算了,不贴了. 这是PDF版https://files.cnblogs.com/files/r00tuser/RPO%E6%BC%8F% ...

  8. 【翻译】 What is class diagram(什么是类图)?

    [翻译] What is class diagram(什么是类图)? 写在翻译之前 这是一篇关于UML的英文博客的翻译,是我们的老师在教授我们UML类图的时候推荐给我们的,为了学习UML顺便学习英语, ...

  9. 错误跳转js

    <script type="text/javascript"> var t = 5; //倒计时的秒数 function showTime(){ document.ge ...

  10. Markdown,你只需要掌握这几个

    目录 题记 正文 1. 常用标记 这是一级标题 这是二级标题 这是三级标题 这是高阶标题(效果和一级标题一样 ) 这是次阶标题(效果和二级标题一样) 2. 次常用标记 3. 不常用标记 4. 专项使用 ...