Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2011, 00:45   #1
jone
Форумчанин
 
Аватар для jone
 
Регистрация: 27.09.2008
Сообщений: 152
Смущение Как залит Фаил на http://depositfiles.com/?

Как залит Фаил на http://depositfiles.com/ru/
будучи авторизованым

помогите с кодом
jone вне форума Ответить с цитированием
Старый 23.05.2011, 01:44   #2
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

Смогу помочь, но часов в 15-16 по киевскому времени.
W0LF вне форума Ответить с цитированием
Старый 23.05.2011, 10:59   #3
alexprey
Форумчанин
 
Регистрация: 25.05.2010
Сообщений: 169
По умолчанию

Вроде бы надо послать пост запрос на адрес, который указан в форме с путём. Проанализируй эту форму, какие параметры принимает и т.д. в теле сообщения указывай тело файла.
alexprey вне форума Ответить с цитированием
Старый 23.05.2011, 17:12   #4
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

Вот моя реализация:
Код:
uses
  IdHTTP, IdMultipartFormData;

function UploadFileOnDepositfiles(FileName: string): string;

  function CCopy(S, C1, C2: string): string;
  begin
    if C1 <> '' then
      Delete(S, 1, Pos(C1, S) + Length(C1) - 1);
    if C2 <> '' then
      Delete(S, Pos(C2, S), Length(S));
    Result := S;
  end;

var
  Http: TIdHTTP;
  Post: TIdMultiPartFormDataStream;
  PostURL, uID, Buff: string;
begin
  try
    Http := TIdHTTP.Create(nil);
    Http.HandleRedirects:= True;
    //Думаю, это понятно для чего...

    Buff := Http.Get('http://depositfiles.com/ru/');
    // Загружаем главную страницу, для получения UPLOAD_IDENTIFIER
    // и URL'a на который будем посылать Post запрос, эти данные мы
    // будем парсить. Для облегчения этого дела предпочитаю использовать
    // вышеописаную функцию CCopy, которая возвращает информацию из некоторой
    // переменной, находящийся между 2умя строками текста.

    PostURL := CCopy(Buff, 'var file_upload_action = ''', ''';');
    uID := CCopy(Buff, '"UPLOAD_IDENTIFIER" value="', '"/>');
    // Собственно получаем PostURL и uID из исходника главной страницы

    Post := TIdMultiPartFormDataStream.Create;
    // TIdMultiPartFormDataStream используем для отправки файла, ну, а с ним
    // и другой информации, тот же uID, MAX_FILE_SIZE и другое, что требуеться.
    Post.AddFormField('MAX_FILE_SIZE', '2097152000');
    Post.AddFormField('UPLOAD_IDENTIFIER', uID);
    Post.AddFormField('go', '1');
    Post.AddFile('files', FileName, 'multipart/form-data');
    Post.AddFormField('agree', '1');
    Post.AddFormField('padding', '');
    // Заполнили Post

    Buff := Utf8ToAnsi(Http.Post(PostURL, Post));
    // Отправляем, принимая во внимания, что кодировка страницы UTF-8

    Result := CCopy(Buff, 'parent.ud_download_url = ''', ''';');
    // Получаем URL файла который мы загрузили
    // Что бы получить так же URL удаления файла, нужно вместо
    // parent.ud_download_url написать parent.ud_delete_url

    Post.Free;
    Http.Free;
    // Освобождаемся
  except
    MessageDlg('Во время работы программы произошла ошибка!', mtError, [mbOK], 0);
  end;
end;
W0LF вне форума Ответить с цитированием
Старый 30.08.2011, 23:18   #5
jone
Форумчанин
 
Аватар для jone
 
Регистрация: 27.09.2008
Сообщений: 152
По умолчанию

Я же просил будучи авторизованы ( я так понимаю надо ещё добавлять вход и получение куков и с ними уже заливать...
jone вне форума Ответить с цитированием
Старый 30.08.2011, 23:51   #6
jone
Форумчанин
 
Аватар для jone
 
Регистрация: 27.09.2008
Сообщений: 152
По умолчанию

Код:
var
   data: TIdMultiPartFormDataStream;

 begin
   data := TIdMultiPartFormDataStream.Create;

   try
     { add the used parameters for the script }
     data.AddFormField('go', '1');
     data.AddFormField('login', 'jone21');
     data.AddFormField('password', 'PASS');

      IdHttp1.AllowCookies := true;
    {  IdHttp1.CookieManager := IdCookieManager1;
              IdCookieManager1.   }
     { Call the Post method of TIdHTTP and read the result into TMemo }
     Memo1.Lines.Text := IdHTTP1.Post('http://depositfiles.com/ru/login.php', data);
   finally
     data.Free;
   end;
 end;
Pass это нормальный пароль с помощью которого я нормально захожу через браузер
А тут выдаёт страницу которая содержит
Код:
<div class="error_message">Неверный пароль или логин.</div>			<div class="row"><span>Логин:</span><input type="text" name="login" value="jone21"/></div>
			<div class="row"><span>Пароль:</span><input type="password" name="password"/></div>
			<div class="forgotpassword">
как быть хелп плиз(
ещё проблема в том что мне куки нужно задержать а потом лить функцией которая приведена выше и там ещё дописать в ней работу с куками авторизованными
jone вне форума Ответить с цитированием
Старый 05.09.2011, 00:46   #7
Den7656
Форумчанин
 
Аватар для Den7656
 
Регистрация: 08.06.2011
Сообщений: 103
По умолчанию

К idhttp привяжи CoockiesManager, первым запросом с логином и паролем получаешь куки, в idhttp handle redirects в true поставить не забудь. И там же сразу вторым запросом можешь заливать файл POST'ом.
Жизнь хорошая штука -и⊥ʎdʞ ин ʞɐʞ
Den7656 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как распаковать фаил из юнита kakawkin Общие вопросы Delphi 2 23.08.2010 16:55
Http Proxy - как написать к браузеру http-прокси? SergeiGuk Общие вопросы .NET 0 21.05.2010 17:37
Поиск DepositFiles record222 Общие вопросы Delphi 1 17.04.2010 17:04
letitbit.net и depositfiles.com Torvald Работа с сетью в Delphi 0 27.03.2009 20:00
Загрузка с Depositfiles stayer Работа с сетью в Delphi 10 04.11.2008 14:32