ExtJS4学习笔记(十六)---上传文件(upload)

50 篇文章 0 订阅
22 篇文章 1 订阅

本文介绍Extjs4文件上传示例,Extjs4中,主要使用up('form').getForm().submit()方法来实现文件的上传,在submit方法中,指定其type属性,这点很重要,如果不指定,那么在上传完成后的处理中,除非服务端不返回数据,否则客户端就会报错。实例代码如下:

upload.html:

 
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <link rel="stylesheet" type="text/css" href="../../resources/css/ext-all.css" />
  6. <script type="text/javascript" src="../../bootstrap.js"></script>
  7. <script type="text/javascript" src="../../locale/ext-lang-zh_CN.js"></script>
  8. <script type="text/javascript" src="upload.js"></script>
  9. <title>MHZG.NET--upload</title>
  10. </head>

  11. <body>
  12. <div id="upload"></div>
  13. </body>
  14. </html>

upload.js:

 
  1. Ext.onReady(function(){
  2.     Ext.create('Ext.form.Panel', {
  3.         title: '文件上传示例--MHZG.NET',
  4.         width: 400,
  5.         bodyPadding: 10,
  6.         margin:'50 10 50 80',
  7.         frame: true,
  8.         renderTo: 'upload',
  9.         items: [{
  10.             xtype: 'filefield',
  11.             name: 'fileName',
  12.             fieldLabel: '上传',
  13.             labelWidth: 50,
  14.             msgTarget: 'side',
  15.             allowBlank: false,
  16.             anchor: '100%',
  17.             buttonText: '选择文件'
  18.         }],
  19.  
  20.         buttons: [{
  21.             text: '上传',
  22.             handler: function() {
  23.                 var form = this.up('form').getForm();
  24.                 if(form.isValid()){
  25.                     form.submit({
  26.                         url: 'upload.asp',
  27.                         type:'ajax',
  28.                         waitMsg: '正在保存文件...',
  29.                         success: function(fp, o) {
  30.                           // Ext.Msg.alert('提示信息', '文件成功上传,文件名字为:'+o.result.file);
  31.                           Ext.Msg.show({
  32.                             title:'提示信息',
  33.                             msg:'文件上传成功<br>上传文件名为:'+o.result.file,
  34.                             minWidth:200,
  35.                             modal:true,
  36.                             buttons:Ext.Msg.OK 
  37.                           })
  38.                           form.findField('fileName').setRawValue('');
  39.                         }
  40.                     });
  41.                 }
  42.             }
  43.         }]
  44.     });
  45. });

服务端文件upload.asp的内容就不写了,由于在文件中用到了各种无组件上传代码,所以比较杂乱,注意一点就可以,在任何类型的服务端处理文件中,在处理完上传之后,给客户端返回一段JSON,客户端就可以通知客户上传完成。服务端处理完上传之后返回的JSON字符串为如下类型:{success:true,file:"""&fileName&"""},JSON字符串可以任意组合,这里的fileName为上传后文件地址+文件名(/UploadFile/2011830.gif),以便于客户端进行其他操作。

最后,在代码中用到了form.findField('fileName').setRawValue('');,这句是清空file选择框,因为用form.reset();根本无法清除file选择框中的内容,无奈之下用了这个办法,如果大家有更好的办法,欢迎留言指正。。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值