|
|
|
| Приветствую !
Прошу помощи вот в таком вопросе:
Необходимо передать PHP скрипту имя дерриктории на клиентской машине для загрузки файлов.
Заранее благодарен :). | |
|
|
|
|
|
|
|
для: Duran
(17.01.2005 в 17:24)
| | Хм... порядок загрузки файлов с машины клиента на сервер обычно такой - из HTML-формы файл передаётся на сервер во временную директорию, от туда уже PHP-скрипт перемещает его в директорию назначения. | |
|
|
|
|
|
|
|
для: Duran
(17.01.2005 в 17:24)
| | А какая задача? Чтобы пользователь мог загрузить файлы только из одной директории? На PHP это невозможно. PHP ничего не знает о диске пользователя. Он "живет" только на сервере. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(17.01.2005 в 20:24)
| | :))).
Мне совсем недавно довелсь столкнуться с этим замечательным языком, собственно поэтому и появилось это сообщение, но.. наскоко я понял... PHP не настоко слеп, если явным образом задать диррикторию, то он с удовольствием пороется на локальном диске пользователя, по памяти что-то типа так...:
$local=dir('c:/temp');
echo" Дескриптор: " .$local->handle."<br>\n";
echo" Путь: ".$local->path."<br>\n";
while($entry=$local->read())
// читаем имя файла в дирриктории,
// пока они не закончатся
{
echo $entry."<br>\n ";
}
$local->close();
|
Ок, поясняю суть задачи... Необходимо организовать загрузку графических файлов с машины клиента в некую диррикторию (для простоты, она расположена там-же, где и сервер) для последующей обработки. Вот что я смог сочинить :). Предположим, что как вариант указания пути, можно попросить пользователя выбрать 1-н файл из нужной дирриктории. Естественно, что это будет форма, например так:
<form name ="loading" action="zagruzka.php" method="post" enctype="multipart/form-data">
<input type="file" name="filename"><br>
<input type="submit" value="Загрузить"><br>
</form>
|
После загрузки, в поле FILENAME будет загружен путь до дирриктории вместе с именем файла. Вот дельше появляются варианты, связанные с пробелом в знаниях языка :). Я воткнул обработчик на onchange (<input type="file" name="filename" onchange=func();>)который запускает скрипт, передающий значение поля FILENAME в доп. текстовое поле
<input type="text" name ="patch">
(document.all.loading.patch.value= document.all.loading.filename.value).
НО ! Путь получается мало того, что с именем файла, так еще и с прямыми слешами, а нужно с обратными :). Я пробовал использовать регулярные вырожения, для вырезания текста, расположенного после последнего слеша и замене прямого на обратный... валятся ошибки. Надеюсь, что кто-нить знает хотябы как "выкусить" имя файла из пути и заменить прямые слеши на обратные средствами PHP или javascript :)). | |
|
|
|
|
|
|
|
для: duran
(18.01.2005 в 09:04)
| | >если явным образом задать диррикторию, то он с удовольствием пороется на локальном диске пользователя
Только если и сервер и клиент расположены на одной машине. Т.е. PHP может "рыться" на диске только той машины, где он выполняется. Далее он просто отдает HTML-код в браузер и… после этого PHP уже нет...
Приведенный Вами код будет работать если Вы запустите PHP у себя на машине и у себя же на машине будете смотреть директории.
-----------------------------------------
Правда, можно запрограммировать на php передачу файлов по протоколу FTP (с хоста на локальную машину). Но, как правило, хост-провайдеры не разрешают подобную работу.
В разделе downloads у нас есть FTP-менеджер. Он прекрасно работает если установлен на локальной машине (переписывает файлы с хоста на локальную машину). И отказывается работать если его установить на сервер (не разрешено).
http://www.softtime.ru/info/ftpmanager.php | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(18.01.2005 в 10:02)
| | Я ознакомился с вашим разделом download's и нашел пакет, который подходит под мои нужды - ФОТОАЛЬБОМ, но... он опять-таки работает ТОЛЬКО с 1-м файлом. ftp не подходит по определению - нужно перекачивать с клиента на сервер, а не наоборот :). Может есть более-менее "бескровный" вариант передачи всех файлов из указанной дериктори ? | |
|
|
|
|
|
|
|
для: duran
(18.01.2005 в 11:24)
| | >не подходит по определению - нужно перекачивать с клиента на сервер, а не наоборот :).
А почему "по определению". FTP в обе стороны работает. | |
|
|
|
|
|
|
|
для: duran
(18.01.2005 в 09:04)
| | Для работы с путями к файлам имеется специальная функция pathinfo(). Функция принимает путь к файлу path и возвращает ассоциативный массив в эле-ментах которого сохраняются директория в которой расположен файл, имя файла и его расширение.
<?php
$path_parts = pathinfo("С:\www\htdocs\index.html");
echo $path_parts["dirname"]."<br>";
echo $path_parts["basename"]."<br>";
echo $path_parts["extension"]."<br>";
?>
|
Результат:
С:\www\htdocs
index.html
html
При замене обратных слешей на прямые, прямой слеш следует экранировать другим прямым слешем, например, пропустив строку через функцию addslashes() http://www.softtime.ru/dic/id_dic=12&id_group=1 | |
|
|
|
|
|
|
|
для: cheops
(18.01.2005 в 14:27)
| | ВАу ! С виду - это то, что мне нужно ! Большое спасибо !:) Видимо, в древнем египте PHP хорошо знали :). | |
|
|
|
|
|
|
|
для: duran
(18.01.2005 в 16:57)
| | >Видимо, в древнем египте PHP хорошо знали :).
Не жалуемся :))) | |
|
|
|