用Delphi3、4编写CGI程序,处理HTML的文件上载,结果大文件不能上载;??(200分)

  • 主题发起人 主题发起人 韩德义
  • 开始时间 开始时间

韩德义

Unregistered / Unconfirmed
GUEST, unregistred user!
用Delphi3、4编写CGI程序——upload.exe,处理客户端HTML的文件上载,
小文件能上载,但大文件不能上载,报错“Explore 无法打开站点
http://.../upload.exe 与服务器的连接被复位”;

我的环境为:
WEB server:NT server 4.0(SP5)
Option Pack 4.0
客户端: IE4.01 SP1

HTML文件如下:
<HTML>
<BODY>
<form enctype="multipart/form-data"
action="../han_test/upload.exe" method="POST">
<input type="text" ID=a1 name=a1 value="123 handeyi">
<BR>
<input type="file" ID=file1 name=file1 value="1111">
<BR>
<input type="file" ID=file2 name=file2 value="2222">
<BR>
<input type="submit" ID=but1 name=but1 value="OK">
</FORM>
</BODY>
</HTML>


真诚求教 韩
 
跟 html 文件没有关系,
可以贴出,或者 <a href=mailto:yysun@263.net>email给我</a> upload.exe 的源程序吗?
 
www.torry.com上的vcl->internet上有一个
控件专门做上载的,你去Down一个试试?
 
有可能是你的CGI在执行过程中抛出了例外,这时
服务器的一般响应就如你所说.仔细检查你的CGI
在内存使用上的问题,估计可能是你使用的内存没
有分配够.
 
我也可以帮您看看, <A href="mailto:peg@263.net"> Drop me a msg </a>
 
据我估计,是因为你编写的UPLOAD不具有断点续传功能,因此当连接断了以后,大文件的其它部分便不能继续上传。
 
应该是这样,没有短点续传,cgi用的是http,就像163沾贴附件速度慢.所以就传不上。
 
断点续传只会减少文件的总的传输时间, 但是出错是避免不了的
 
如何用delphi和http方式实现文件上传,请赐教!
 
非也非也,我想他用的应当在INTRANET上测试,不会是传输时间问题。
那么,原因就是这个了:
你在提交时的UPLOAD.EXE没有上传控制,即,post的得到数据没有使用
GETCHUNK(VB)方法,由于POST的时间过长,量也过大,使用通常的方法就
不太管用了,使用类似GETCHUNK的方法,一段一段地得到数据,用循环判断是否
传完。
这个问题不仅UPLOAD时会存在,在提交TEXTAREA字段时也会出现。不信你可
以试一下,在TEXTAREA中输入》1M的数据,然后CGI显示,如果没用以上方法,
包准出错。

怎么样,给分吧:)
 
这个问题的根本原因在于当数据量>48Kb时
要用ReadClient来读取,而ECB最大能返回
48912个字节?哈哈!!!!!
 
接受答案了.
 
后退
顶部