BLOG > 开发 > Project Sylvan 开发日志 (8)

Project Sylvan 开发日志 (8)

2006.6.7

今天一半成功一半失败。
在写上传单个文件时,dojo.io.bind无法获取multipart的表单上传的文件,这个问题困扰了我一上午,到最后还是没有解决。下午把这个问题提交到了dojo的maillist里,希望有人能帮助我。
上午写单个文件上传的表单时,妄图使用session来传送参数,可是AJAX是异步传输,提交表单前页面并未结束执行,session的值并不能存入server端。使用session_write_close()来强制写入session,但是还是遇到问题,session只更新一次,原因可能是因为通过AJAX载入页面时,并不能session_start……,后来,只能用GET方式传送参数。

下午基于开源的postlet写了多文件上传。由于这个java applet使用HTTP Transfer,并会重定向页面,所以,不能在dojo widget中使用它,只能通过window.open的方式打开一个页面。当完成上传时,如果要更新父页面中的widget中的内容,则使用如下的Javascript:
浠g爜

window.opener.execScript("dojo.widget.getWidgetById('contentPane').setUrl('fm_category_manage.php?t='+Math.random())");


让window.opener对象执行Javascript。在这里为了避免dojo读取缓存,即使不需要参数,我也给页面通过GET方式传递一个虚参t,使用随机函数生成,每次都不一样。

今天完成了:
fm_file_list.php,文件管理显示界面;
fm_file_multiupload.php,批量上传,使用postlet,需要JRE;
upload.php,上传执行程序,信息写入数据库,并生成 Thumbnail;
class TblFileInfo ,fil_file_info的实体类,继承于class Table;
buildThumbnailPath(),生成缩略图路径。

还未解决的问题:
fil_file_upload.php 单个文件上传,dojo无法接收到multipart的表单中的文件信息,如果实在不行,考虑使用work around的办法:使用window.open打开HTML页面,不使用AJAX上传文件,完成后再通过AJAX刷新widget的状态。
批量上传时,中文文件名无法正确获取,塞入DB时会变乱码。这个问题暂时放在一边,以后有空研究一下JAVA源代码。

还需要改进的:
加入gif等其他图片格式的缩略图功能支持。
窗体滚动条……
批量上传后结果显示……
应该还会有自定义水印支持……
如果您喜欢这篇文章,您可以点击下列链接收藏
Del.icio.us Yahoo书签 365Key网摘 天极网摘 我摘 POCO网摘 YouNote网摘 和讯网摘 博啦网
发布时间 发布于 2006-06-07 22:31:32 | 阅读次数 阅读过2182次 | 分类 开发 | 评论 没有评论