idhttp上传文件的问题?

xiaokun111 2007-08-27 03:40:20
var
response: TStringStream;
MMPFDS: TIdMultiPartFormDataStream;
idhttp1: TIDhttp;
begin
if OpenDialog1.Execute then
begin
MMPFDS := TIdMultiPartFormDataStream.Create;
response := TStringStream.Create('');
idhttp1 := TIDhttp.Create(nil);
MMPFDS.AddFile('file1', OpenDialog1.FileName, 'multipart/form-data'); //
idhttp1.Request.ContentType := MMPFDS.RequestContentType;

MMPFDS.Position := 0;
try
idhttp1.Post('http://119.119.119.69/upload/upload.asp', MMPFDS, response);
finally
showMessage(response.DataString);
MMPFDS.Free;
response.Free;
idhttp1.Disconnect;
idhttp1.Free;
end;
end;
end;

在上传文件的第一行总是加了"ntent-Transfer-Encoding: binary" 导致文件打不开

...全文
510 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
愚人笔记 2007-09-28
  • 打赏
  • 举报
回复
1.indy9 的某些版本TIdMultiPartFormDataStream有bug
ntent-Transfer-Encoding: binary 是说内容传输乱码
to LZ

To myy

上传文件的例子,还没测试

//indy一定要用9.0.18版本,否则上传不成功。

uses
IdHTTP,IdMultipartFormData, IdGlobal;

//上传jpeg,返回值是服务器端保存的文件名称。
function UpLoagFile(FileName: String;http: TIdhttp): string;
var
obj : TIdMultiPartFormDataStream;
Url: String;
begin
obj := TIdMultiPartFormDataStream.Create;
try
obj.AddFile('Image',FileName, GetMIMETypeFromFile(FileName));
http.Request.ContentType := obj.RequestContentType;
obj.Position := 0;
Url := 'http://192.168.1.49/insertImage.aspx'; //这个页面负责接收文件
try
Result := http.Post(Url, obj);
except
on E: Exception do
begin
Application.MessageBox(PChar('上传文件失败,错误原因:' + E.Message), ('错误'), MB_OK + MB_ICONERROR);
Result := '';
end;
end;
finally
obj.Free;
end;
end;

愚人笔记 2007-09-28
  • 打赏
  • 举报
回复
没有遇到我体验下先
xiaokun111 2007-08-27
  • 打赏
  • 举报
回复
上传文件是成功的,但改变了文件内容,第一行总是加了ntent-Transfer-Encoding: binary
并非名称非法,所有上传的文件都加了
WuChenCan 2007-08-27
  • 打赏
  • 举报
回复
没遇到过,会不会是名称非法造成的。

1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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