PHP загрузить имя файла - PullRequest
1 голос
/ 15 мая 2010

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

Так в основном: есть ли способ гарантировать, что с самого начала процесса загрузки файла, файл имеет определенное имя и местоположение на сервере?

Ответы [ 5 ]

3 голосов
/ 15 мая 2010

Не то чтобы я знал.

PHP будет использовать определенную в php.ini папку tmp для хранения загрузок, пока вы не скопируете их в правильное местоположение с помощью move_uploaded_file (). Так что очень легко узнать его местоположение, но имя файла случайное, и я не думаю, что вы можете определить его. Если у вас не будет нескольких одновременных загрузок (например, если вы собираетесь загружать файлы и знаете, что не будете загружать 2 файла одновременно), вы можете проверить самый последний загружаемый файл в каталоге tmp. .

Распространенным решением для мониторинга закачек является apc.rfc1867

1 голос
/ 16 мая 2010

Я знаю три варианта:

  1. RFC1867 (как упомянуто другими), что позволяет вам опрашивать прогресс загрузки, используя ajax
  2. Flash-загрузчики, такие как SWFUpload , которые позволяют опрашивать прогресс загрузки с помощью JavaScript
  3. Создайте демон командной строки PHP, прослушивающий порт 80, который принимает загрузку файлов и использует общую память (или какой-либо другой механизм) для передачи информации о ходе загрузки. Хотелось бы найти ссылку, но я прочитал отличную статью о сайте, который позволял пользователям загружать свои файлы XML библиотеки iTunes, и он обрабатывался сервером в режиме реального времени при его загрузке. Очень круто, но очевидно более сложное, чем предыдущие варианты.

Я имел приличную удачу с SWFUpload в прошлом.

0 голосов
/ 16 мая 2010

Нет способа отслеживать ход загрузки файла только с помощью PHP, так как PHP не отправляет события прогресса во время загрузки. Это можно сделать с помощью Flash Uploader, даже если Flash загружается через PHP-скрипт. Flash отправляет временный файл на сервер во время загрузки для отправки событий хода выполнения. Некоторые из структур JavaScript, такие как YUI, используют SWF для управления загрузками. Проверьте виджет YUI Uploader.

http://developer.yahoo.com/yui/uploader/

0 голосов
/ 15 мая 2010

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

0 голосов
/ 15 мая 2010

Не думаю, что вы можете настроить имя, так как оно будет случайным именем во временной папке. Вы можете изменить каталог, но я не могу найти ответ на Google (проверьте php.ini).

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