我想实现一个文件上传的功能:
(1) 选择一个文件A. 点击选择按钮. 将文件A的路径显示面板上.
(2) 文件名的后面带有删除的图标. 表示可删除[color=blue]准备上传[/color]的文件.
(3) 可选择多个文件.如选择一个文件B. 重复步骤(1)...
具体效果就像JE问答的上传附件那样, 可上传多个. 可删除.
而我的思路如下:
(1) 定义一个文件选择的formpanel
[code="js"]
var fileSelectFormPanel = new Ext.form.FormPanel({
items:[{
xtype:'textfield'
,fieldLabel:'文件路径'
,inputType:'file'// 出现选择文件的按钮
,allowBlank:false
,blankText:'请选择上传的文件'
}]
});
[/code]
(2) 定义一个显示准备上传文件的面板
这个很简单, 就是在(1)中选择了什么文件, 就在面板把文件的目录和文件名显示出来.
后面再带上一个删除的图标.
(3) 定义一个formpanel. 上传所有的文件.
在这个form中, 才是真正的上传的文件.
因为formpanel不能嵌套formpanel.
所以我打算用一些隐藏字段来提交.
隐藏的字段的值得就是已选择的文件的全路径
[code="js"]
var uploadFiles = new Ext.form.FormPanel({
url:'xxxxAction!myMethod.action'
,fileUpload:true // 必须指定
,buttons:[
{xtype:'button', text:'上传', handler:function(){
// files是文件全路径
uploadFiles.setValues(files);
}}
]
});
[/code]
这么做,想法都可能是有问题, 因为我发现有几个地方实现不了.
color=red 得不到文件的全路径.[/color]
无论是fileSelectFormPanel.getValue()或是fileSelectFormPanel.getRawValue()都只是文件的名而已.
color=red 实现不了多文件一起上传.[/color]
表单uploadFiles实质上还是只能上穿一个文件.
color=red 如果给一个全路径的字符串. 如c:/123.txt, 做为隐藏字段.这样后台也能接受到吗??[/color]