Delphi indy发错值

时间:2014-03-20 23:07:11

标签: delphi indy

Poblem解决了

我将图片上传到网站但是1个参数数据存在问题

   Params.AddFormField('Filename','Koala.jpg','') ;
    Params.AddFormField('upload_type','normal-boxed','') ;
    Params.AddFormField('thumbsize','180') ;
    Params.AddFormField('adult','1') ;
    Params.AddFormField('mmh_user_session',userid) ;
    Params.AddFormField('flash', '1','');
    Params.AddFormField('private_upload', '0','');
    Params.AddFormField('form', 'adult=1&thumbsize=180&tos=on',''); // here is the problem
    Params.AddFile('Filedata', 'Koala.jpg','application/octet-stream');
    Params.AddFormField('Upload', 'Submit Query','');

发送的表单字段的值如此编码并导致问题(图像未上传)

 adult=3D1&thumbsize=3D180&tos=3Don

应该像

一样发送
adult=1&thumbsize=180&tos=on

所以我怎么能阻止indy编码这个值?

更多信息

 form4.IdHTTP1.AllowCookies := True;
 form4.IdHTTP1.ReadTimeout := 30000;
 form4.IdHTTP1.HandleRedirects := true;
form4.IdHTTP1.ProtocolVersion := pv1_1;

我使用delphi XE 3

页面源代码

<form action="upload.php" method="post" id="upload_form" enctype="multipart/form-data">

我试过了

form4.IdHTTP1.Request.ContentType := 'multipart/form-data';

但它仍然发送编码!

1 个答案:

答案 0 :(得分:0)

添加

解决了问题
.ContentTransfer:='8bit';

所以应该是这样的

 Params.AddFormField('form', 'adult=1&thumbsize=180&tos=on','').ContentTransfer:='8bit';