Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.188.148.71] |
|
Сообщ.
#1
,
|
|
|
Здравствуйте.
Я понял, что для решения данной задачи используются два скрипта, написанных на Perl. Один грузит, а другой отслеживает изменяющийся размер. Но CGI.pm создает временный файл во время загрузки, а узнать имя этого временного файла перед загрузкой невозможно. Тогда я решил грузить файл не через param={'имя_поля'}; ,а с помощью STDIN. Файл создается и все казалось бы хорошо. Но как мне узнать имя файла, которое изначально было у пользователя на машине? Сейчас файл сохраняется с названием и расширением, которые я укажу в скрипте. И еще вопрос. Правилен мой ход мыслей? |
Сообщ.
#2
,
|
|
|
надо передавать имя файла, причем можно это сделать в параметре GET запроса, а читать файл из STDIN, т.е. одно другому не мешает
|
Сообщ.
#3
,
|
|
|
Цитата Ivasik @ Ход мыслей... правильный... ход мыслей... и так несколько циклов... И можно забыть обо всём. Наверное, для передачи данных вы используете протокол типа TCP\IP, в частности, наверное, HTTP. Там файл-не файл не понятно-что. Передаются сообщения, которые содержат заголовки и данные. В заголовках к данным - всякие пояснения к данным. В данных - сами данные. Для HTTP есть две основные тактики передачи данных: полностью и по частям (большими "пакетами"). Сервер заранее должен знать требуемый объём и текущий принятый объём данных. Первое решается с помощью текущих доступных возможностей ESv6 с отправкой цифры\суммы полного объёма на сервер. Сервер понял, что предстоит получить столько-то байтов и не закрывает соединение с клиентом. Клиент частями шлёт данные (непрерывно, почти потоковое видео) серверу. Сервер принимает части, складирует и учитывает объём. Можно вычислить процент. Сообщение клиента №1: общая информация о файле с заявкой на его загрузку. Сообщение уважаемого сервера №1: готов\не готов. Дальше идёт триаомундия, чревоугодие и прочие грехи. Происходит параллельный\ая передача-приём сервером\ами частей большого файла и получение клиентом сообщений об успешном\неуспешном приёме (имитация пакетов TCP\IP). Куда и под каким именем складывать данные на сервере\ах может выяснять программа по заголовкам или начальным данным или в любом шахматном порядке. Лишь бы собрать их обратно, если нужно. --------------------------------------------------------------------------------------- Ааа... Забыл про GUI. Ну, должен быть отдельный канал, где сервер отчитывается клиенту о количестве принятого объёма данных. А на клиенте уже можно рисовать. |