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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.06.2010, 02:09   #1
RIO
Форумчанин
 
Аватар для RIO
 
Регистрация: 15.12.2007
Сообщений: 422
По умолчанию Залить файл на sendspace

Здравствуйте! Имеется файлообменник sendspace.com, как можно залить туда файл с помощью компонента idHTTP? Снифером получаю пост данные, но там получается один пост запрос и то какой-то не понятный... Может что-то по другому следует сделать? Но я бы был рад, если бы вы даже посоветовали мне например другой файлообменник, где можно легко сделать поставленную задачу… Потому что я проверял на многих файлообменниках и везде эта же ерунда, то есть только пост запрос POST_DATA…
RIO вне форума Ответить с цитированием
Старый 19.06.2010, 15:07   #2
kangreon
Форумчанин
 
Аватар для kangreon
 
Регистрация: 03.04.2009
Сообщений: 305
По умолчанию

Вроде заливает.
Код:
function IntupV(s, name : string ): string;
begin
  Result := Copy(s,PosEx('value="',s,Pos(name,s))+7,PosEx('"',s,PosEx('value="',s,Pos(name,s))+7)-PosEx('value="',s,Pos(name,s))-7);
end;

function UpploadFile(FileName : string; IdHTTP : TIdHTTP): string;
var
  s, action : string;
  data:TIdMultiPartFormDataStream;
  i : Integer;
begin
  s := IdHTTP.Get('http://www.sendspace.com');
  s := Copy(s,Pos('<form',s),Pos('</form>',s)-Pos('<form',s));
  action := Copy(s,Pos('on="',s)+4,PosEx('"',s,Pos('on="',s)+5)-Pos('on="',s)-4);
  Data:=TIdMultiPartFormDataStream.Create;
  data.AddFormField('MAX_FILE_SIZE',IntupV(s,'MAX_FILE_SIZE'));
  data.AddFormField('UPLOAD_IDENTIFIER',IntupV(s,'UPLOAD_IDENTIFIER'));
  data.AddFormField('DESTINATION_DIR',IntupV(s,'DESTINATION_DIR'));
  data.AddFormField('js_enabled',IntupV(s,'js_enabled'));
  data.AddFormField('signature',IntupV(s,'signature'));
  data.AddFormField('recpemail',IntupV(s,'recpemail'));
  data.AddFormField('ownemail',IntupV(s,'ownemail'));
  data.AddFormField('terms',IntupV(s,'terms'));
  data.AddFile('file_0',FileName,'application/x-msdownload');
  s := IdHTTP.Post(action,data);
  data.Free;
  i := Pos('Download Link',s);
  Result := Copy(s,PosEx('value="',s,i)+7,PosEx('" size',s,i)-PosEx('value="',s,i)-7);
end;

// Пример использования
procedure TForm1.Button1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
  Edit1.Text := UpploadFile(OpenDialog1.FileName,IdHTTP1)
end;

Последний раз редактировалось kangreon; 19.06.2010 в 15:13.
kangreon вне форума Ответить с цитированием
Старый 19.06.2010, 23:50   #3
RIO
Форумчанин
 
Аватар для RIO
 
Регистрация: 15.12.2007
Сообщений: 422
По умолчанию

Огромное спасибо Судя по коду он работает и вправду. Но вот у меня выдает почему-то ошибку при нажимании на кнопку – No data to read. И еще один вопрос, каким снифером Вы получали данные?
RIO вне форума Ответить с цитированием
Старый 20.06.2010, 00:18   #4
kangreon
Форумчанин
 
Аватар для kangreon
 
Регистрация: 03.04.2009
Сообщений: 305
По умолчанию

HTTP Analyzer
Код HTML:
<form method="post" action="http://fs11u.sendspace.com/processupload.html" enctype="multipart/form-data" onSubmit="return uploadformsubmit()" name="upload2519" id="upload2519">
    <input type="hidden" name="MAX_FILE_SIZE" value="314572800">
    <input type="hidden" name="UPLOAD_IDENTIFIER" value="1266875519.1276978563.5D540182.25.0">
    <input type="hidden" name="DESTINATION_DIR" value="5">
	<input type="hidden" name="js_enabled" id="js_enabled" value="0">
	<input type="hidden" name="signature" value="1fc7e8fe7b5fa7eb1fc194678cb161d3">
    <input type="file" name="file_0" size="35" id="filebrowse"><br>
    <input type="text" name="desc0" style="width:236px;" id="filedescription"><br>
    <input type="text" id="recpemail" name="recpemail" style="width:236px;" value="" class="wickEnabled:recipientemailsfloater"><br>
	<input type="text" id="ownemail" name="ownemail" value="" style="width:236px;"><br>
    <input type="hidden" name="terms" value="1" id="terms">
	<input type="submit" id="btnupload" value="Upload File">
</form>
kangreon вне форума Ответить с цитированием
Старый 20.06.2010, 01:18   #5
RIO
Форумчанин
 
Аватар для RIO
 
Регистрация: 15.12.2007
Сообщений: 422
По умолчанию

Понял Все уже работает, спасибо

Последний раз редактировалось RIO; 20.06.2010 в 02:18.
RIO вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Залить файл на файлообменник UnD)eaD)Snake Работа с сетью в Delphi 11 08.06.2010 16:47
Не получаеться залить фото (Ucoz) Айдар Работа с сетью в Delphi 1 14.03.2010 08:23
Залить сайт Дініс Свободное общение 12 20.12.2009 14:28
Залить цветом область. gusluk Мультимедиа в Delphi 3 31.10.2009 05:58
ЗАлить файл на ФТП russian-stalker Работа с сетью в Delphi 8 25.09.2008 11:46