Rooock
2009-12-18 19:23
浏览 288
已采纳

Ext文件上传的三个问题

我想实现一个文件上传的功能:

(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]

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • zhoujuan520 2009-12-19 22:25
    已采纳

    quote 得不到文件的全路径.
    无论是fileSelectFormPanel.getValue()或是fileSelectFormPanel.getRawValue()都只是文件的名而已.

    (2) 实现不了多文件一起上传.
    表单uploadFiles实质上还是只能上穿一个文件.

    (3) 如果给一个全路径的字符串. 如c:/123.txt, 做为隐藏字段.这样后台也能接受到吗?? [/quote]

    1.除了IE浏览器外,都只能获得文件名.
    2.可以多文件上传,你就普通html上传的那种表单都可以多文件上传,javaeye那种是通过ajax异步提交了数据到后了.
    [url]http://max-bazhenov.com/dev/upload-dialog-2.0/index.php[/url]

    3.只要控件没有被disabled,后台都可以接受.

    另外上传有很多解决办法,推荐使用swfuplaod
    [url]http://yourgame.iteye.com/blog/549328[/url]
    [img]http://dl.iteye.com/upload/attachment/180890/513be33d-6ea0-383b-a977-640e421d92b9.png[/img]

    已采纳该答案
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题