안녕하세요.
인디로 http post를 하다 막혀 질문을 올립니다.
<FORM METHOD="post" enctype="multipart/form-data" name="test" ACTION="http://hdwiki2.book.kim/uploadpict.php">
<TABLE>
<TR> <TD><INPUT TYPE="text" NAME="FileNumber" id="FileNumber" value="1"></TD></TR>
<TR> <TD><INPUT TYPE="text" NAME="ImagePath" id="ImagePath" value="./upload/"></TD></TR>
<TR><TD><INPUT TYPE="file" NAME="Image0" id="Image0"></TD></TR>
<TR><TD><INPUT TYPE="text" NAME="ImageSize0" id="ImageSize0" value="100_80"></TD></TR>
<TR> <TD><INPUT TYPE="file" NAME="Image1" id="Image1"></TD></TR>
<TR> <TD><INPUT TYPE="text" NAME="ImageSize1" id="ImageSize1" value="0_400"></TD></TR>
<TR> <TD><INPUT TYPE="submit"></TD></TR>
</TABLE>
</FORM>
상기 html폼과 같이 파일포스트를 하려고 했는데 파일이 가질 않습니다.
fHTTP := TIdHTTP.Create(nil);
postdata := TIdMultiPartFormDataStream.Create;
fhttp.Request.ContentType := postdata.RequestContentType;
with postdata do
begin
AddFormField('FileNumber', '1');
AddFormField('ImagePath', './upload/');
AddFile('Image0', Extractfilepath(paramstr(0)) + '0.jpg', postdata.RequestContentType);
AddFormField('ImageSize0', '100_80');
AddFile('Image1', Extractfilepath(paramstr(0)) + '1.jpg',postdata.RequestContentType);
AddFormField('ImageSize1' , '600_400');
end;
postdata.Position := 0;
recstream := TStringStream.Create('');
vurl := 'http://hdwiki2.book.kim/uploadpict.php';
try
try
fhttp.Post(vurl, postdata, recstream);
Result := recstream.DataString;
except
MyShowMessage('Connection Fail to ' + vurl);
Result := '';
end;
finally
recstream.Free;
postdata.Free;
fHTTP.Free;
end;
문제는 어제까지는 이코드를 컴파일해보면 제대로 됐는데 오늘 갑자기 포스트가 안되는 실행파일이 생기는겁니다.
인디관련코드는 전혀 수정하지않았는데 말이죠.
이전에 이런 증상이 나타났을때는 델파이를 다시 태우면 없어졌는데 지금은 인디도 버젼업해보고 델파이도 다시 깔아봤지만 전혀 포스트가 않됩니다.
이거 주기적으로 이러니 정말 환장할 지경인데요.
코드가 잘못인지 인디탓인지 선배님들께서 한수 가르쳐주십시오.
감사합니다.
AddFormField(`ImageSize0`, `100_80`);
AddFormField(`ImageSize1` , `600_400`);
AddFile(`Image0`, Extractfilepath(paramstr(0)) + `0.jpg`, postdata.RequestContentType);
AddFile(`Image1`, Extractfilepath(paramstr(0)) + `1.jpg`,postdata.RequestContentType);
<!--CodeE-->
코드에서 포스트데터스트림에 파일을 추가하는 순서를 바꾸니 포스트가 제대로 됩니다.
텍스트필드들을 먼저 추가하고 파일들은 마지막에 몰아서 추가하면 되는군요.
원인은 해명하지못했지만 저와 같은 경우를 당하시는 분들께 도움이 되기를 바랍니다.