Просмотр полной версии : Как закачать фото на сайт delphi
вот что снифер перехватывает
-----------------------------23844141621881\r\nContent-Disposition: form-data; name="act"\r\n\r\nadd\r\n-----------------------------23844141621881\r\nContent-Disposition: form-data; name="from"\r\n\r\nfile\r\n-----------------------------23844141621881\r\nContent-Disposition: form-data; name="new_photo"; filename="1.jpg"\r\nContent-Type: image/jpeg\r\n\r\nÿØÿà
изъяснись конкретнее: что ты перехватил, что за сайт, есть ли попытки написания кода?
Это кодировка multipart form-data, можешь найти о ней инфу в Google. Когда ознакомишься, - без трудностей сможешь загрузить картинку на требуемый сайт.
SultanOFF
09.06.2010, 10:38
var
formData: TIdMultiPartFormDataStream;
s,url:string;
reggi:tregexpr ;
begin
try formdata:=TIdMultiPartFormDataStream.Create; formData.AddFile('F',furl,'image/gif'); formData.AddFormField('upload', 'yes'); formData.AddFormField('rotate_angle', '0°');
s:= form1.idHTP1.Post('http://www.radikal.ru/action.aspx',formData);
reggi:=tregexpr.Create;
reggi.Expression:='<input id="input_link_1" value="(.*?)"'; if reggi.Exec(s) then begin
url:=reggi.Match[1];
showmessage(url) end
else showmessage('Не удалось загрузить изображение');
finally formdata.Free; reggi.Free; end;
вот делал недавно заливку картинки на радикал, можешь заточить под свой сайт
Вот запрос:
-----------------------------61911981522888\r\nContent-Disposition: form-data;
name="act"\r\n\r\nadd\r\n-----------------------------61911981522888\r\nContent-Disposition: form-data;
name="from"\r\n\r\nfile\r\n-----------------------------61911981522888\r\nContent-Disposition: form-data; name="new_photo";
filename="a_e36a5297.jpg"\r\nContent-Type: image/jpeg\r\n\r\nÿØÿà
вот я попытался сделать запрос, правильно?
formdata:=TIdMultiPartFormDataStream.Create; // создаем переменную пост запрсоа
formData.AddFile('F',filename,'image/jpeg');
formData.AddFormField('act', 'nadd');
formData.AddFormField('from', 'nfile');
formData.AddFormField('name', 'new_photo');
formData.AddFormField('filename', 'имя фото');
formData.Free;
Вот так
multi:=Tidmultipartformdatastream.Create;
multi.addfile('photo', 'фотография.jpg', 'Content-Type: image/jpeg');
form1.idhttp1.post(сайт, multi);
aydar, зачем ты после заполнения formdata, не отправив запрос сразу его освобождаешь?
formData.AddFile('new_photo', filename, 'image/jpeg');
aydar, зачем ты после заполнения formdata, не отправив запрос сразу его освобождаешь?
Забыл поставить :rolleyes: ,
formdata:=TIdMultiPartFormDataStream.Create; // создаем переменную пост запрсоа
formData.AddFile('new_photo', filename, 'image/jpeg');
formData.AddFormField('act', 'nadd');
formData.AddFormField('from', 'nfile');
form1.idhttp1.post(сайт, formData);
formData.Free;
т.е. конечный код должен быть таким?
Забыл поставить :rolleyes: ,
т.е. конечный код должен быть таким?
да
че то не получаеться делаю вот так:
formdata:=TIdMultiPartFormDataStream.Create; // создаем переменную пост запрсоа
formData.AddFile('new_photo', '123.jpg', 'image/jpeg');
formData.AddFormField('act', 'nadd');
formData.AddFormField('from', 'nfile');
cod:=idhttp1.post('сайт', formData);
formData.Free;
вот сапрос при правильной отправки:
POSTDATA =-----------------------------21624280192125
Content-Disposition: form-data; name="act"
add
-----------------------------21624280192125
Content-Disposition: form-data; name="from"
file
-----------------------------21624280192125
Content-Disposition: form-data; name="new_photo"; filename="123.jpg"
Content-Type: image/jpeg
ÿØÿà
Может из-за этого параметра filename="123.jpg" ?
блин, никак не получаетться(((
assdancer
11.06.2010, 21:53
formdata:=TIdMultiPartFormDataStream.Create; // создаем переменную пост запрсоа
formData.AddFile('new_photo', '123.jpg', 'image/jpeg');
formData.AddFormField('act', 'add');
formData.AddFormField('from', file');
cod:=idhttp1.post('сайт', formData);
formData.Free;
вот так должно быть, тоесть не nfile, не nadd, а без n.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot