如何编程实现将用form来将word文档post到服务器上?(200分)

  • 主题发起人 主题发起人 willrain
  • 开始时间 开始时间
W

willrain

Unregistered / Unconfirmed
GUEST, unregistred user!
用webbrowser生成网页再加file附件,然后post,但是只能手工选择文件,不能自动填充;
用NMHTTP或ICS来post也只能传username=hhh&password=1&...等的文本信息;

word文档如何传呢???
 
把文件转换成流,很好用!
 
freeskying_sy,说详细些,OK? 我做好啦好给你加200分呀!
 
我用ICS实现过,只需将文档通过EncodeStream转换成文本就可以了,
服务器端再将收到的数据通过DecodeStream解码就可以转换成原本的文件了。
记得要引用EncdDecd.pas单元。祝你好运。
 
...
CRTF := #10#13;
httpcli1.ContentTypePost := 'multipart/form-data;cboundary=---------------7cf87224d2020a';
strBuf := '----------------7cf87224d2020a' + CRLF +
'Content-Disposition: form-data; name="upfile"; filename="c:/test.doc"' + CRLF +
'Content-Type: text/plain' + CRLF + CRLF +
strContent(文件内容) + CRLF +
'---------------7cf87224d2020a' + CRLF +
'Content-Disposition: form-data; name="filetype"' + CRLF + CRLF +
'Draft' + CRLF +
'---------------7cf87224d2020a--';
if Length(strBuf) > 0 then
DataOut.Write(strBuf[1], Length(strBuf));
DataOut.Seek(0, soFromBeginning);
httpcli1.SendStream := DataOut;
httpcli1.post;
...
当strContent文件内容为文本时没什么问题,可是如何处理Word文档,
我把test.doc读进流,再EncodeStream,再读入StringList然后变成string
类型的文件内容,post到webserver后得到的文件却是Base64的文件而不是
decode出来的Word文档,按理decode应该由webserver来完成而不是我的
CGI来完成的。但如果不Encode的话根本就没法通过http传送,还有什么
比较好的解决方案吗?
 
谢谢两位
 
成功了,thanks
 
后退
顶部