前不久学习了一段时间的extjs,最近要做一个课程设计。学习extjs时候用的是《extjs in action》这本书。
-------------------------此为背景---------------------------------
因为需要一个批量提交的功能 ,所以就想让extjs实现文件上传功能。
第一次google,得到的结果是,直接把 textfield 的 inputType属性设置为:“file”,即可。顺便得之,extjs没有专门的文件上传的组件。
------第一次,失败。原因:能选择文件,但是提交的时候查看firefox的firebug发现选择的文件没有提交。
第二次google,得到的结果,要把formpanel的fileUpload设置为:true。
-----第二次失败。原因:成功上传了文件。后台也能正确的解析,但是返回的json数据无法使用。比如后台返回的:{success:true,msg:'ok'},但是前台总是进入到failure之中。出现的问题是:前台无法接受(或者说是使用)后台返回的json数据。
第三次google,这次历经了很长时间,主要是因为总是不成功,然后就没耐心了。拖了两个星期吧。为了解决这个问题,我用了我那蹩脚的英语在google搜索:how to use extjs upload a file。得到的结果是,extjs的实例程序中有此功能,有一个FileUploadField.js,可以实现文件上传。但是问题依旧没有解决。
最后一次google,发现要在struts2中的result中配置一个属性:<param name="contentType">text/html</param>,目的是为了防止有些浏览器不能正确处理,可能会将服务器端的响应作为文件提示用户进行下载。但是,加上这行代码之后,问题就解决了。
--------------------------分割线------------------------------
经过测试又发现,extjs文件上传,直接把表单提交给一个txt文件,然后txt文件中返回:{success:true},依旧不能进入到前台的success函数处理之中。
具体什么样的内部原因,自己不大清楚。
随手记下,留待以后解决吧……