在前一篇文章中ACTIVEX实现大文件FTP上传下载http://blog.csdn.net/mzyp/archive/2010/01/20/5217686.aspx
该方案有一个很大问题: 当源文件大于2G时,无法读取,更谈不上上传下载。
上网查资料,很多网友或推荐修改delphi7自带indy9.0.10读流写流原参数integer改int64,或推荐升级indy9.0.18,然后再做上述修改等等。
但经过无数次测试验证,这些方案均无疾而终,眼看工期越来看迫近,近乎对delphi写这个activex失去了信心。
甚至于从网上下载了几个VC源码进行超大文件上传下载,以便不时之需。
也许真的是皇天不负有心人吧,经过一千零一次搜索解决方案(一千零一次搜索?别当真,就当我在吹牛吧^_^)
终于有位网友在一篇贴子回复中解答了这个令人抓狂的难题:升级到indy快照版。
indy快照版内含indy9和indy10,其中indy10也有FOR DELPHI7版本,哇噻,这正是我梦寐以求的!
以前之所以未升级到indy10版本,是因为该版本大多是基于dot net环境,我最终需要只是让我做的这个可实现大文件FTP上传下载Activex嵌入网页中,假若采用时下流行indy10版本,势必让最终用户安装dot net环境,估计最终用户会疯掉!!!
所以要求这个Activex是原生态,健康品,必须的!
现在有了这个indy快照版为我保驾护航,这个大于2G以上文件不能上传下载的问题迎刃而解。经测试上传8G也没有问题,估计更大也可以。不过我没测试过,因为我们的需求只要求5G就可以,有兴趣的可自行测试。
还有一个小插曲,也值得一提。
项目选项(菜单project->options->Packages页),在Runtimes packages中不勾选Build with runtime packages。为便于后期网页部署,我不能选中它。在编译这个Activex项目时,总提示indy某个类编译版本不同,于是把indy包按顺序重新编译了一遍,没发现问题,但再编译这个Activex项目时,总提示indy某个类编译版本不同。
最后,Activex项目属性search path中加入indy包编译结果路径,再次编译终于通过。
为让最终用户在IE中应用方便,有必要对此Activex进行数字签名。
已知Ativex( 此处指ocx) 打包发布有两种方式, 分别是DOS 命令行方式 和图形化向导方式,其中前者可做成批处理。
前者参见http://blog.csdn.net/cai5/archive/2008/07/29/2731187.aspx
后者参见http://showvi.com/Blog/ViewAirticle/194