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


Автор: M1ndAction 18.1.2010, 17:41
Добрый день,
решил попробовать ICS, но пока не все получается. Изначально задача такова: нужно загружать на файлообменник некоторое количество файлов. Сейчас это происходит в отдельном потоке с помощью TidHttp, но работает не стабильно - на определенном этапе поток останавливается, потому решил попробовать другой инструмент - Internet Component Suite.
GET-запрос делаю без проблем, есть пример POST-запроса с параметрами, но файл загрузить пока не получается. Была похожая http://forum.vingrad.ru/forum/topic-83112.html, но особо не помогло.
Сейчас логика такова: GET-ом загружается страница, в обработчике события OnDocEnd происходит обработка страницы (извлекаются ссылки), и после этого пытаюсь сделать POST:
Код

procedure TForm2.cliDocEnd(Sender: TObject);
var
  ff, data: String;
  fs: TFileStream;
begin
  ...
  fs := TFileStream.Create(dlgOpen.FileName, fmOpenRead);
  SetLength(ff, fs.Size);
  fs.Read(ff[1], fs.Size);
  data := 'uploadId='+uploadid+'&'+'Empty='+''+'file_0='+ff;//загрузка идет с параметрами uploadid и Empty (пустой)
  cliUpload.SendStream := TMemoryStream.Create;
  cliUpload.SendStream.Write(data[1], Length(data));
  cliUpload.SendStream.Seek(0,0);
  cliUpload.URL := actionstr;
  cliUpload.PostASync;
end;


В таком случае в параметрах получается сплошная мешанина (проверяю через Http Analyzer). Пробовал только файл в поток передавать:
Код

  fs := TFileStream.Create(dlgOpen.FileName, fmOpenRead);
  cliUpload.SendStream := TMemoryStream.Create;
  cliUpload.SendStream := fs;
  cliUpload.SendStream.Seek(0,0);
  cliUpload.URL := actionstr;
  cliUpload.PostASync;


Но также не работает - в логах вижу что запрос не формируется как положено, хотя ContentTypePost установлен в multipart/form-data.
В Indy для передачи файлов я использовал структуру TIdMultiPartFormDataStream и все прекрасно и удобно работало, здесь же пока не получается. Какие будут идеи? smile

Автор: SultanOFF 23.1.2010, 13:33
да тоже интересует вопрос, как пост запросом отправить файл ибо в примерах это не показано

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