PDA

Просмотр полной версии : Как закачать фото на сайт delphi


aydar
09.06.2010, 00:55
вот что снифер перехватывает

-----------------------------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ÿØÿà

Linkus
09.06.2010, 02:27
изъяснись конкретнее: что ты перехватил, что за сайт, есть ли попытки написания кода?

Chrome~
09.06.2010, 07:43
Это кодировка 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;
вот делал недавно заливку картинки на радикал, можешь заточить под свой сайт

aydar
09.06.2010, 16:07
Вот запрос:
-----------------------------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;

aydar
09.06.2010, 22:07
кто поможет?

090808
09.06.2010, 22:14
Вот так

multi:=Tidmultipartformdatastream.Create;
multi.addfile('photo', 'фотография.jpg', 'Content-Type: image/jpeg');
form1.idhttp1.post(сайт, multi);

HakaR
09.06.2010, 22:57
aydar, зачем ты после заполнения formdata, не отправив запрос сразу его освобождаешь?
formData.AddFile('new_photo', filename, 'image/jpeg');

aydar
09.06.2010, 23:29
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;

т.е. конечный код должен быть таким?

090808
10.06.2010, 14:40
Забыл поставить :rolleyes: ,



т.е. конечный код должен быть таким?
да

aydar
10.06.2010, 15:11
че то не получаеться делаю вот так:

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" ?

aydar
11.06.2010, 07:57
блин, никак не получаетться(((

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.