Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: PHP и достут к диску.
 
 автор: Duran   (17.01.2005 в 17:24)   письмо автору
 
 

Приветствую !
Прошу помощи вот в таком вопросе:
Необходимо передать PHP скрипту имя дерриктории на клиентской машине для загрузки файлов.
Заранее благодарен :).

   
 
 автор: cheops   (17.01.2005 в 18:45)   письмо автору
 
   для: Duran   (17.01.2005 в 17:24)
 

Хм... порядок загрузки файлов с машины клиента на сервер обычно такой - из HTML-формы файл передаётся на сервер во временную директорию, от туда уже PHP-скрипт перемещает его в директорию назначения.

   
 
 автор: glsv (Дизайнер)   (17.01.2005 в 20:24)   письмо автору
 
   для: Duran   (17.01.2005 в 17:24)
 

А какая задача? Чтобы пользователь мог загрузить файлы только из одной директории? На PHP это невозможно. PHP ничего не знает о диске пользователя. Он "живет" только на сервере.

   
 
 автор: duran   (18.01.2005 в 09:04)   письмо автору
 
   для: 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 :)).

   
 
 автор: glsv (Дизайнер)   (18.01.2005 в 10:02)   письмо автору
 
   для: duran   (18.01.2005 в 09:04)
 

>если явным образом задать диррикторию, то он с удовольствием пороется на локальном диске пользователя

Только если и сервер и клиент расположены на одной машине. Т.е. PHP может "рыться" на диске только той машины, где он выполняется. Далее он просто отдает HTML-код в браузер и… после этого PHP уже нет...

Приведенный Вами код будет работать если Вы запустите PHP у себя на машине и у себя же на машине будете смотреть директории.

-----------------------------------------
Правда, можно запрограммировать на php передачу файлов по протоколу FTP (с хоста на локальную машину). Но, как правило, хост-провайдеры не разрешают подобную работу.
В разделе downloads у нас есть FTP-менеджер. Он прекрасно работает если установлен на локальной машине (переписывает файлы с хоста на локальную машину). И отказывается работать если его установить на сервер (не разрешено).

http://www.softtime.ru/info/ftpmanager.php

   
 
 автор: duran   (18.01.2005 в 11:24)   письмо автору
 
   для: glsv (Дизайнер)   (18.01.2005 в 10:02)
 

Я ознакомился с вашим разделом download's и нашел пакет, который подходит под мои нужды - ФОТОАЛЬБОМ, но... он опять-таки работает ТОЛЬКО с 1-м файлом. ftp не подходит по определению - нужно перекачивать с клиента на сервер, а не наоборот :). Может есть более-менее "бескровный" вариант передачи всех файлов из указанной дериктори ?

   
 
 автор: glsv (Дизайнер)   (19.01.2005 в 00:42)   письмо автору
 
   для: duran   (18.01.2005 в 11:24)
 

>не подходит по определению - нужно перекачивать с клиента на сервер, а не наоборот :).
А почему "по определению". FTP в обе стороны работает.

   
 
 автор: cheops   (18.01.2005 в 14:27)   письмо автору
 
   для: 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

   
 
 автор: duran   (18.01.2005 в 16:57)   письмо автору
 
   для: cheops   (18.01.2005 в 14:27)
 

ВАу ! С виду - это то, что мне нужно ! Большое спасибо !:) Видимо, в древнем египте PHP хорошо знали :).

   
 
 автор: cheops   (18.01.2005 в 17:04)   письмо автору
 
   для: duran   (18.01.2005 в 16:57)
 

>Видимо, в древнем египте PHP хорошо знали :).
Не жалуемся :)))

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования