|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
19.11.2017, 21:01 | #1 |
Пользователь
Регистрация: 19.11.2017
Сообщений: 18
|
Срочно! Помощь с Delphi Indy и передачей больших файлов
Добрый день! Работаю с вк апи. Делаю многопоточную загрузку видео. Проблема вот в чём. Когда код был вне потока, писало OutOfMemory при попытке создания FileStream. В общем, большие файлы не грузятся. Очень срочно нужна помощь, желательно код. Свой представляю ниже(работа потока);
procedure ThreadSEND.Execute; const CRLF = #13#10; var HTTP: THTTPsend; Video: TFileStream; Bound, Field: String; begin HTTP := THTTPsend.Create; HTTP.TargetHost := host; HTTP.UserAgent := 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36'; Bound := '-----' + IntToHex(Random(65535), 8) + '_boundary'; HTTP.MimeType := 'multipart/form-data; boundary=' + Bound; Field := '--' + Bound + CRLF; Field := Field + 'Content-Disposition: form-data; name="video_file"; filename="' + fn + '"' + CRLF + 'Content-Type: ' + 'video/mp4' + CRLF + CRLF; WriteStrToStream(HTTP.Document, Field); try try Video := TFileStream.Create(fn, fmOpenRead); HTTP.Document.CopyFrom(Video, 0); WriteStrToStream(HTTP.Document, CRLF); Field := '--' + Bound + CRLF + 'Content-Disposition: form-data; name="video_file"' + CRLF + CRLF + 'post' + CRLF; WriteStrToStream(HTTP.Document, Field); Field := '--' + Bound + '--' + CRLF; WriteStrToStream(HTTP.Document, Field); HTTP.HTTPMethod('POST', url); if HTTP.ResultString = 'OK' then Synchronize(Sync) else Synchronize(Async); except Synchronize(MemoryEXP); Video.Free; HTTP.Clear; HTTP.Free; end; finally HTTP.Clear; HTTP.Free; Video.Free; end; Synchronize(Finality); end; Пытался найти что-то по передаче частями, но не знаю, как это реализовать используя данный код и вообще Delphi + Indy в принципе. И будет ли сервер вк принимать постепенную загрузку такую. Последний раз редактировалось LikanGT; 19.11.2017 в 21:02. Причина: Добавление информации |
20.11.2017, 08:40 | #2 |
Форумчанин
Регистрация: 16.12.2009
Сообщений: 902
|
Походу TFileStream весь файл в память грузит здесь нужно попробовать сразу с диска через AssignFile
Можно попробовать сделать так Код:
В потоке вашем объявите процедуру которая будет отправлять из файла куски по 1024бит можете больше сделать Код:
В вашем коде что написали уберите или закомментируйте Video := TFileStream.Create(fn, fmOpenRead); и HTTP.Document.CopyFrom(Video, 0); Ну а далее напишите так перед HTTP.HTTPMethod('POST', url); Код:
Последний раз редактировалось Aliens_wolfs; 20.11.2017 в 15:43. |
20.11.2017, 15:56 | #3 | |
Пользователь
Регистрация: 19.11.2017
Сообщений: 18
|
Цитата:
|
|
20.11.2017, 16:19 | #4 |
Пользователь
Регистрация: 19.11.2017
Сообщений: 18
|
Вроде всё добавил. Прога крешнулась, убрал try except из потоков вроде как процесс идет, но в диспетчере сеть по 0 занята.
|
20.11.2017, 16:42 | #5 |
Пользователь
Регистрация: 19.11.2017
Сообщений: 18
|
Вот что получилось по коду. Может опять что не так делаю.
Код:
Код:
Код:
|
20.11.2017, 17:15 | #6 |
Форумчанин
Регистрация: 16.12.2009
Сообщений: 902
|
А сколько у вас файл для передачи весит?
|
20.11.2017, 17:28 | #7 |
Пользователь
Регистрация: 19.11.2017
Сообщений: 18
|
Пробовал 50 мб, 500 мб и 10 мб
|
20.11.2017, 17:29 | #8 |
Пользователь
Регистрация: 19.11.2017
Сообщений: 18
|
|
20.11.2017, 17:58 | #9 |
Пользователь
Регистрация: 19.11.2017
Сообщений: 18
|
|
20.11.2017, 18:11 | #10 |
Пользователь
Регистрация: 19.11.2017
Сообщений: 18
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Delphi срочно помощь | dasf51 | Фриланс | 8 | 07.09.2017 12:53 |
Срочно! Помощь с циклами в Delphi | Raikerock | Помощь студентам | 3 | 14.09.2014 09:27 |
Нужна помощь с пакетной передачей | anghela | Помощь студентам | 18 | 01.12.2013 13:08 |
ПРоблема с передачей и сохранением файлов с помощью indi компонентов | albatros | Работа с сетью в Delphi | 4 | 18.02.2009 22:39 |
Нужна помощь с передачей даных в процедуру | programer_tang | Общие вопросы Delphi | 5 | 28.08.2008 10:14 |