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
Форумы портала PHP.SU :: Версия для печати :: Как через opendir() открывать папку на другом логическом диске?
Форумы портала PHP.SU » » Работа с файловой системой и файлами » Как через opendir() открывать папку на другом логическом диске?

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

1. borus - 04 Декабря, 2015 - 14:27:42 - перейти к сообщению
Здравствуйте!

Дело происходит на локальном сервере 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, как у файла
2. Viper - 04 Декабря, 2015 - 16:18:06 - перейти к сообщению
borus пишет:
Теперь ищу как файловую систему Windows 8.1 привести к UTF-8, как у файла
правильно! Зубы удаляем через попу.

rawurlencode для всех имен папок+файлов. В php иначе никак.
3. borus - 07 Декабря, 2015 - 10:48:08 - перейти к сообщению
Здравствуйте. Спасибо
Viper пишет:
rawurlencode для всех имен папок+файлов. В php иначе никак.

Простите, не понимаю, где я должен применить эту функцию. то есть нужно так открывать директорию:
$fp=opendir(rawurlencode($folder))
?
4. Viper - 07 Декабря, 2015 - 11:50:29 - перейти к сообщению
borus пишет:
то есть нужно так открывать директорию
нет. В php у файловых функций нет поддержки имен файлов и папок не в латинице.
Т.е. папка 'Общая' должна называться '%D0%9E%D0%B1%D1%89%D0%B0%D1%8F' чтобы вы могли открыть её в php.

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

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

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

 

Powered by ExBB FM 1.0 RC1