Загрузка файла на удаленный сервер с индикатором выполнения - PullRequest
0 голосов
/ 27 августа 2010

Мне нужно включить загрузку файлов на мой сайт, и после нескольких часов размышлений я придумал довольно хороший способ, как мне кажется.

Страница с формой загрузки будет обслуживаться интерфейсным веб-сервером. Чтобы убедиться, что он загружает файл на мой удаленный сервер хранения, я сделаю это в разметке:

<form action="http://storage.mysite.com/upload.php">
    <!-- whatever -->
</form>

Так что с этим справляются, но это немного усложняет ситуацию. Я также хотел индикатор загрузки для загрузки, и я думаю, что я нашел способ сделать это тоже. Проверьте мои удивительные навыки Photoshop, объясняя это:

http://imgur.com/opk39.jpg

Чтобы узнать о ходе загрузки загруженного файла, я собирался использовать функцию PHP filesize();, чтобы получить размер файла для файла во время его загрузки. Если у меня есть это и общий размер файла, я могу решить это с помощью Javascript и обновить страницу. Но я не знаю, как получить общий размер файла загрузки: P

Затем, когда загрузка будет завершена, я снова могу проверить размер файла, и если он совпадает с общим размером файла, я знаю, что загрузка завершена. Затем я могу запустить функцию Javascript, чтобы обновить страницу с помощью URL-адреса для загрузки и всего остального.

Во всяком случае, так я планирую. Я не хочу использовать какие-либо модные флеш-материалы, так как не хочу полагаться на то, что у моих пользователей установлена ​​флеш-память. Кто-нибудь, кто сделал что-то похожее или имеет опыт в этом, дает какой-нибудь совет и дает мне знать, правильно ли я поступаю?

Спасибо, высоко ценится.

Ответы [ 2 ]

0 голосов
/ 27 августа 2010

Существует множество плагинов jQuery, которые сделают это за вас, поэтому вам не нужно заново изобретать колесо.

Вот один пример

Естьмногие просто попробуйте поискать на сайте плагинов jQuery " прогресс загрузки файла "

или

Поиск в Google

0 голосов
/ 27 августа 2010

Я немного устала от своих навыков PHP, но я постараюсь указать вам правильное направление. Поскольку XMLHttpRequest не поддерживает загрузку файлов, вам нужно обойти это, используя один из двух методов.

Первый метод заключается в исправлении обработчика PHP RFC1867, который можно найти здесь от Pdoru. Проблема с этим методом заключается в том, что если вы используете общий сервер, люди могут немного раздражаться по поводу применения вами исправлений, он также требует, чтобы вы выполняли тяжелую работу со старым кусочком кода C (а не с тем, что я бы хотел отладить). !).

Второй способ - использовать скрытый iframe и внешний скрипт для опроса прогресса (записать общий размер всего файла и фактического загруженного файла во временные файлы и сравнить).

Я думаю, что вариант 2, вероятно, лучше всего подходит для вашей ситуации, Томас Ларссон недавно представил удивительный пример, который вы можете найти здесь .

Пост Тома охватывает оба метода и настоятельно рекомендуется к прочтению. Есть пример того, как сделать это, используя Perl-скрипт с использованием php-страницы, которая, я думаю, либо удовлетворит ваши потребности, либо, по крайней мере, объяснит ваши варианты.

Насколько мне известно, методы, описанные выше, в настоящее время являются единственными двумя способами, которыми это можно сделать.

Надеюсь, это приведет вас на правильный путь.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...