谁用XMLHTTP或者XMLSERVERHTTP做程序呀?有个巨难缠的问题!顶者有分!

fayeflash 2004-09-15 07:05:44
我的目标是用XMLHTTP传文件(非XML格式的文件)
大概的主要代码如下:

ServerXMLHTTP401.open('GET','一个URL',False);
Str:=TMemoryStream.Create;
Str.LoadFromFile(ExtractFileDir(Application.ExeName)+'\123.RAR');
StreamToVariant(Str,V); //自己写的转换函数
ServerXMLHTTP401.send(V);

现在我这里跟踪了一下,V的大小不为0,和我预期的一样大,没有问题。
我判断ServerXMLHTTP401.readyState也为4,没有问题。

但是我在服务器端的ASP文件里去判断Request.TotalBytes却是0,奇怪了!!!!
也不知道为什么,请有相关经验的朋友帮忙呀!谢谢!
...全文
162 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
fayeflash 2004-09-16
  • 打赏
  • 举报
回复
自己顶!
princesd 2004-09-16
  • 打赏
  • 举报
回复
帮你顶一下
pressman 2004-09-16
  • 打赏
  • 举报
回复
up,顶
fayeflash 2004-09-16
  • 打赏
  • 举报
回复
halfdream(哈欠)你说的真对!我现在也解决了这个问题!!
我现在解决了从客户端发送的问题,现在在服务器端Response.Write Request.TotalBytes确实和我发送的东西大小是一样的。但是我这么写:
Set Stm = Server.CreateObject("ADODB.Stream")
Stm.Type=1
Stm.Open
Stm.Position= 0
Stm.Write Request.BinaryRead(Request.TotalBytes)
系统提示说:
量或者类型不正确,或者不在可以接受的范围之内,要不就是与其他数据冲突。
这是为什么呢?
我在Delphi是这么写的:
ServerXMLHTTP401.open('POST',URL,False);
Str:=TMemoryStream.Create;
Str.LoadFromFile(文件名);
StreamToVariant(Str,V);
ServerXMLHTTP401.send(V);
Str.Free;

procedure StreamToVariant (Stream:TMemoryStream;var V:OLEVariant);
var
P:Pointer;
begin
V:=VarArrayCreate([0,Stream.Size -1],varByte);
P:=VarArrayLock(V);
Stream.Position:=0;
Stream.Read(P^,Stream.Size);
VarArrayUnlock(V);
end;

请问该怎么改呢?毛病在什么地方呢?
halfdream 2004-09-16
  • 打赏
  • 举报
回复
改用POST吧。
我在印象中,GET方法不允许数据放在HTTP REQUEST的BODY里。
fayeflash 2004-09-16
  • 打赏
  • 举报
回复
难道没有人用这个东西吗?没有人一边用Delphi一边用ASP吗?
fayeflash 2004-09-16
  • 打赏
  • 举报
回复
自己顶!等待答案!
wilowind 2004-09-15
  • 打赏
  • 举报
回复
up

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧