Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Залить картинки.


Автор: iddqd 21.8.2006, 09:08
Необходимо программно залить картинки на хостинги.
Я сделал заливку на www.imageshack.us вот код:
Код

function GetContentType(Filename: string): string;
var
  ext: string;
begin
  ext := ExtractFileExt(Filename);
  result := 'text/html';
  if ext = 'bmp' then result := 'image/bmp';
  if (ext = 'jpg') or (ext = 'jpeg') then result := 'image/jpeg';
  if ext = 'png' then result := 'image/png';
end;

function ExecuteScr(Src: string): string;
var
  Form: TidMultiPartFormDataStream;
  Response: TStringStream;
begin
  Response := TStringStream.Create('');
  Form := TidMultiPartFormDataStream.Create;
  Form.AddFile('fileupload', Src, GetContentType(Src));
  Form1.idHTTP1.Post('http://imageshack.us/index.php', Form, Response);
  Result := ExtractImageUrl(Response.DataString, true);
  Form.Free;
  Response.Free;
end;

ExtractImageUrl - функция парсит хтмл и находит ссылку на картинку.

Помогите, пожалуйста сделать заливку на www.hidebehind.com и www.fapomatic.com
По-моему первый требует какой-то авторизации, а со вторым вобще не понятно.
Есть какие-нибудь идеи?

Автор: RA 21.8.2006, 15:45
Первый не требует авторизации, зато требует

POST: http://www.hidebehind.com/free-image-hosting.php

POST DATA:
Цитата

upl0ad[]    filename="" Content-Type: application/octet-stream
percent0    100%
upl0ad[]    filename="" Content-Type: application/octet-stream
percent1    100%
upl0ad[]    filename="C:\1.jpg" Content-Type: image/pjpeg
percent2    100%
share    1
adult    1
submit.x    31
submit.y    10


Второй:

POST: http://fapomatic.com/upload.php

POST Data: userfile=C:\MyFile.jpg

Автор: iddqd 21.8.2006, 16:00
К сожалению сейчас проверить не могу.
Т.е первый случай вот так:
Код

function ExecuteScr(Src: string): string;
var
  Form: TidMultiPartFormDataStream;
  Response: TStringStream;
begin
  Response := TStringStream.Create('');
  Form := TidMultiPartFormDataStream.Create;
 Form.AddFormField('upl0ad[]', '');
Form.AddFormField('percent0', '100');
Form.AddFormField('upl0ad[]', '');
Form.AddFormField('percent1', '100');
  Form.AddFile('fileupload', Src, GetContentType(Src));
Form.AddFormField('percent2', '100');
Form.AddFormField('share', '1');
Form.AddFormField('adult', '1');
Form.AddFormField('submit.x', '31');
Form.AddFormField('submit.y', '10');
  Form1.idHTTP1.Post('http://www.hidebehind.com/free-image-hosting.php', Form, Response);
  Result := ExtractImageUrl(Response.DataString, true);
  Form.Free;
  Response.Free;
end;


Код

function ExecuteScrFP(Src: string): string;
var
  Form: TidMultiPartFormDataStream;
  Response: TStringStream;
begin
  Response := TStringStream.Create('');
  Form := TidMultiPartFormDataStream.Create;
  Form.AddFile('userfile', Src, GetContentType(Src));;
  Form1.idHTTP1.Post('http://fapomatic.com/upload.php', Form, Response);
  ShowMessage(Response.DataString);
  //Form1.MemoBBCode.Lines.Text := Response.DataString;
  Result := ExtractImageUrlFP(Response.DataString);
  Form.Free;
  Response.Free;
end;


Хочу сразу сказать, что код для fapomatic не работает smile

Добавлено @ 16:03 
Всё же проверил. Оба варианта не работают. Hidebehind пишет: HTTP 1.1 403 Forbidden smile

Автор: RA 21.8.2006, 16:59
Ээээ, я всё проверил и всё работает, тоесть подход правельный, а вот реализация на Indy это уже под вопросом.


В аттаче маленькая утилитка для проверки таких мелочей (на будущее, может пригодится  smile  ).

Автор: iddqd 21.8.2006, 17:03
Спасибо. Раз проверил и работает, не мог бы ты помочь с реализацией в дельфи с помощью Indy?

Автор: RA 21.8.2006, 17:13
На indy нет (я их плохо знаю),  на ICS да.

Автор: iddqd 21.8.2006, 17:17
А я ICS плохо smile
В таком случае ты не мог бы написать готовую функцию, в которую я передаю путь к файлу, а она заливает на fapomatic, а вторая функция на hidebehind. И пусть возвращает полный хтмл код с ссылками, текст буду парсить сам. Буду очень признателен. Потому-что время с программой поджимает, а я не знаю что делать smile

Заранее спасибо.

Автор: RA 21.8.2006, 23:14
ок. только скажи какая у тебя версия Delphi

Автор: iddqd 22.8.2006, 09:57
7.
Спасибо большое.

Автор: RA 24.8.2006, 06:19
Вобщем такое дело, на практике всё получилось както убого,
ICS при обращениях к hidebehind выдаёт Forbiden, я пробовал эксперементировать с шапкой, это максимум приводило к пустой странитце, 
в результате пришлось тоже самое проделать на Clevere и всё получилось, причём я сравнивал отправляемые данные клевера и ICS они абсодютно идентичны, но ICS-у от сервера приходил *уй, вто время как при обращении клевера к fapomatic *уй приходил к клеверу, я может чего не догоняю, а может я где-то допустил маленькую и глупую ошибку, обычно такое бывает и на поиски у меня уходит уйма времени smile, времени блин нету сёдня в час ночи уезжаю в карелию smile такшо оставляю после себя вот такую вот поделку -> где половина  на Клевере половина на АйЦээСе smile


iddqd, ICS ты найдёшь на overbyte.be (качай версию V6), ну а клеввера подозреваю у тебя нету поэтому клевер ты найдёшь проверив личные сообщения (PM)



PS: Вобще если кто-то  мне объяснит в чём моя ошибка при заливки на hidebehind.com своим примером того как это нужно делать на ICS, то я буду этого человека уважать до гроба smile

Автор: iddqd 24.8.2006, 11:08
Спасибо большое.
Только где взять файл AlFcnString.pas(.dcu)?

Автор: iddqd 24.8.2006, 12:03
Для фапоматика нужен этот файл, а на хайдбехайнд не заливает smile

Автор: iddqd 24.8.2006, 12:47
Файл нашел, фапоматик работает, а второй хостинг - нет smile

Автор: RA 24.8.2006, 15:41
Цитата(iddqd @  24.8.2006,  12:47 Найти цитируемый пост)
Файл нашел, фапоматик работает, а второй хостинг - нет


Этого быть неможет, потомучто лыжи едут.


Вот скомпилированный пример каторый у меня шлёт на оба сервера.

Автор: iddqd 24.8.2006, 15:52
Даже готовый пример у меня почему-то просто виснет при заливке на хайдбехайнд, а потом выдаёт ошибку: неверный дескриптор smile
Сейчас попробую на других компьютерах.

Автор: iddqd 28.8.2006, 09:46
Спасибо за помощь. Всё решил самостоятельно.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)