Люди помогите :wall: Испробовал уйму вариантов. Может какой-то нюанс есть, а я его не знаю.
Аплоад фото на сайт происходит, но после подтверждения добавления объявления, фото не отображается (есть только рамка с местом под фото).
порядок добавления фото такой:
:18:POST:200:418 :text/html:http:
возвращается строка /tmp_images/128999e90f5bf131f292a2cd93106e07-1289162335_80x60.jpg
если получена эта строка, то аплоад произошел успешно
этот результат записывается в параметре images[]
:20:POST:302:2,85 K:text/html:http:
:21:GET:200:4,23 K:text/html:http:
предпросмотр (если валидация пройдена успешно)
:36:POST:302:332 :text/html:http:
:37:GET:200:4,64 K:text/html:http:
подтвержнение добавления. оно же запись на сервер
procedure TForm1.PreSend;
var
i:integer;
begin
Stream.AddFormField(idCategory, ADOTable2.FieldByName('Rubric').AsString);
Stream.AddFormField(idCity, ADOTable2.FieldByName('City').AsString);
if ADOTable2.FieldByName('Metro').AsString<>'' then
Stream.AddFormField(idMetro, ADOTable2.FieldByName('Metro').AsString);
Stream.AddFormField(idTitle, AnsiToUtf8(ADOTable2.FieldByName('Title').AsString));
Stream.AddFormField(idDescription, AnsiToUtf8(ADOTable2.FieldByName('Text').AsString));
Stream.AddFormField(idSale, ADOTable2.FieldByName('BuySell').AsString);
Stream.AddFormField(idPrice, ADOTable2.FieldByName('Price').AsString);
Stream.AddFormField(idAllowMail, ADOTable2.FieldByName('Notify').AsString);
Stream.AddFormField(idImage, '');
Stream.AddFormField(idMail, ADOTable1.FieldByName('Mail').AsString);
Stream.AddFormField(idName, AnsiToUtf8(ADOTable1.FieldByName('Name').AsString));
Stream.AddFormField(idPhone, ADOTable1.FieldByName('Phone').AsString);
for I := 0 to 7 do
begin
if AdoTable2.FieldByName('Param'+IntTostr(i+1)).AsString<>'' then
begin
Stream.AddFormField(idParam + '[' + ADOTable2.FieldByName('idParam'+IntToStr(i+1)).AsString + ']',
ADOTable2.FieldByName('Param'+IntToStr(i+1)).AsString);
end;
end;
end;
procedure TForm1.SendDeclaration;
var
file1:string;
tempImages:TStringList;
myStream: TStringStream;
memStream: TFileStream;
begin
tempImages:=TStringList.Create;
Client.Request.ContentType:='multipart/form-data';
if FileExists(ADOTable2.FieldByName('Photo1').AsString) then
begin
Stream := TIdMultipartFormDataStream.Create;
Stream.AddFile('image', '006.JPG', 'image/jpeg');
tempImages.Add(Client.Post('http://www.avito.ru/additem/upload', Stream));
Form1.UpDate;
Stream.Free;
end;
Client.Request.ContentType:='multipart/form-data';
Client.Request.ContentLanguage:='ru';
Client.Request.Host:='www.avito.ru';
Client.Request.Connection:='keep-alive';
Client.Request.UserAgent:='Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)';
Client.Request.Accept:='text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
Client.Request.AcceptLanguage:='ru,en-us;q=0.7,en;q=0.3';
Client.Request.AcceptCharSet:='windows-1251,utf-8;q=0.7,*;q=0.7';
Client.Request.AcceptEncoding:='utf-8';
Client.Request.Referer:='http://www.avito.ru/additem';
Stream := TIdMultipartFormDataStream.Create;
PreSend;
if tempImages.Count>0 then
begin
Stream.AddFormField('images[]', Utf8ToAnsi(tempImages.Strings[0]));
end;
Client.Post('http://www.avito.ru/additem', Stream);
Stream.Free;
Form1.UpDate;
Client.Request.Referer:='http://www.avito.ru/additem/confirme';
Client.Request.ContentType:='application/x-www-form-urlencoded';
Stream := TIdMultipartFormDataStream.Create;
Stream.AddFormField('done', 'Готово >');
Client.Post('http://www.avito.ru/additem/confirme', Stream);
Stream.Free;
tempImages.Clear;
tempImages.Free;
end;