Re[2]: Проблема с запросом НTTPSend
От: surovnev  
Дата: 18.05.12 05:18
Оценка:
Здравствуйте, okman, Вы писали:

O>Здравствуйте, surovnev.


O>Не увидел в приведенном коде обработки ответа сервера.

O>То, что вызывает ShellExecute — это уже новый запрос, а Вам нужно получить то,
O>что вернул сервер в ответ на первый HTTP POST.

Вот функция:
function HttpPostFile(const URL, FieldName, FileName: string;
const Data: TStream; const ResultData: TStrings): Boolean;
const
CRLF = #$0D + #$0A;
var
HTTP: THTTPSend;
Bound, s: string;
begin
Bound := IntToHex(Random(MaxInt), 8) + '1231654654';
HTTP := THTTPSend.Create;
try
s := '--' + Bound + CRLF;
s := s + 'content-disposition: form-data; name="' + FieldName + '";';
s := s + ' filename="' + FileName +'"' + CRLF;
s := s + 'Content-Type: image/jpeg' + CRLF + CRLF;
HTTP.Document.Write(Pointer(s)^, Length(s));
HTTP.Document.CopyFrom(Data, 0);
s := CRLF + '--' + Bound + '--' + CRLF;
HTTP.Document.Write(Pointer(s)^, Length(s));
HTTP.MimeType := 'multipart/form-data, boundary=' + Bound;
Result := HTTP.HTTPMethod('POST', URL);
ResultData.LoadFromStream(HTTP.Docu ment);
finally
HTTP.Free;
end;
Вызываю её нажатием на кнопку
st := TFileStream.Create('2.jpg', fmOpenRead or fmShareDenyWrite);
try
ProxyHTTPPostFile('http://рicuрiс.nеt/add_photo.php', 'UploadFile', ExtractFilename('2.jpg'), st, TStringList(memo1.Lines));
finally
st.Free;

т.е. ответ от сервера загоняется в memo1.Lines (так ProxyHTTPPostFile('http://рicuрiс.nеt/add_photo.php', 'UploadFile', ExtractFilename('2.jpg'), st, TStringList(memo1.Lines))
и вот как раз ответ залетает со всеми ссылками на картинки. т.е. даже если открыть в браузере страницу http://рicuрiс.nеt/add_photo.php то там будут все картинки которые я загружал через программу.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.