Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как через opendir() открывать папку на другом логическом диске?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
borus
Отправлено: 04 Декабря, 2015 - 14:27:42
Post Id



Новичок


Покинул форум
Сообщений всего: 52
Дата рег-ции: Май 2012  


Помог: 0 раз(а)




Здравствуйте!

Дело происходит на локальном сервере XAMPP.
Есть php страница cо следующим кодом:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. ini_set("max_execution_time", "600");
  4. function select_file($folder,$picture){
  5.    $fp=opendir($folder);
  6.    while (false !== ($cv_file = readdir($fp))) {
  7.    ...
  8.    }
  9.    closedir($fp);
  10.    fclose($log);
  11. }
  12. ?>
  13. <!DOCTYPE html>
  14. <html>
  15. <head>
  16. <meta charset="utf-8">
  17. <title>Отбор файлов по списку названий из csv файла</title>
  18. </head>
  19. <body>
  20. <p>Введите файл:</p>
  21. <form enctype="multipart/form-data" method="POST" >
  22. <input type="file" name="userfile">
  23. <input type="submit" value="Отобрать картинки!">
  24. </form>
  25. <?php
  26. if(isset ($_FILES['userfile'])){
  27.         $fn = $_FILES["userfile"]["tmp_name"];
  28.         $fd = fopen($fn,  "r");
  29.         while (!feof($fd)){
  30.                 $fields = fgetcsv($fd);
  31.                 select_file("photo", $fields[0]);
  32.         }
  33. }
  34. ?>
  35. </body>
  36. </html>
  37.  

До тех пор пока я обращался к папке "photo", которая лежала в той же папке, что и исполняемый php файл, все работало. Когда же потребовалось шерстить папку на другом логическом диске, и я подставил вместо
select_file("photo", $fields[0]);
select_file("D:\Общая\База обработанных фотографий", $fields[0]);
страница по клику на кнопку отобрать стала бесконечно висеть и стали выкидываться сообщения вида:
Warning: opendir(D:\Общая\База обработанных фотографий,D:\Общая\База обработанных фотографий): in C:\xampp_new\htdocs\selectfoto\select_files.php on line 5
Warning: opendir(D:\Общая\База обработанных фотографий): failed to open dir: No such file or directory in C:\xampp_new\htdocs\selectfoto\select_files.php on line 5
и ниже бесконечное число предупреждений вида
Warning: readdir() expects parameter 1 to be resource, boolean given in C:\xampp_new\htdocs\selectfoto\select_files.php on line 6

Скажите, можно ли скрипт заставить открывать папку с другого логического диска и как это сделать?

дело похоже оказалось в несоответствии кодировок php файла и файловой системы, с английскими папками все срабатывает. Теперь ищу как файловую систему Windows 8.1 привести к UTF-8, как у файла


Отредактировано модератором: Мелкий, 04 Декабря, 2015 - 14:32:39
 
 Top
Viper
Отправлено: 04 Декабря, 2015 - 16:18:06
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




borus пишет:
Теперь ищу как файловую систему Windows 8.1 привести к UTF-8, как у файла
правильно! Зубы удаляем через попу.

rawurlencode для всех имен папок+файлов. В php иначе никак.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
borus
Отправлено: 07 Декабря, 2015 - 10:48:08
Post Id



Новичок


Покинул форум
Сообщений всего: 52
Дата рег-ции: Май 2012  


Помог: 0 раз(а)




Здравствуйте. Спасибо
Viper пишет:
rawurlencode для всех имен папок+файлов. В php иначе никак.

Простите, не понимаю, где я должен применить эту функцию. то есть нужно так открывать директорию:
$fp=opendir(rawurlencode($folder))
?
 
 Top
Viper
Отправлено: 07 Декабря, 2015 - 11:50:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




borus пишет:
то есть нужно так открывать директорию
нет. В php у файловых функций нет поддержки имен файлов и папок не в латинице.
Т.е. папка 'Общая' должна называться '%D0%9E%D0%B1%D1%89%D0%B0%D1%8F' чтобы вы могли открыть её в php.

Вариант 2.
Использовать транслитерацию имен папок и файлов.

Вариант 3.
Не использовать php

Вариант 4.
Называть в латинице(как в нормальном мире это делают), а всё что не в латинице прогонять через rawurlencode.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с файловой системой и файлами »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB