2013-06-26 5 views
0

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

У меня есть файл csv с именами файлов и категориями, теперь я хочу просто скопировать эти имена файлов за строкой и позволить PHP скопировать их в каталог destenie.

Это на XAMPP на моей локальной машине, может быть, это проблема?

Вот что у меня есть уже:

<?php 
$source = ""; 
$destination = "Kompaniefest05/"; 
$handle = fopen($source."names.txt", "r"); 
$buffers[] = ""; 
if ($handle) { 
    while (($buffer = fgets($handle, 4096)) !== false) { 
     array_push($buffers, $buffer); 
    } 
    if (!feof($handle)) { 
     echo "Error: unexpected fgets() fail\n"; 
    } 
    fclose($handle); 
}; 

foreach ($buffers as $buffer){ 
    echo "Copy ".$source.$buffer." to ".$destination.$buffer; 
    if(copy($source.$buffer, $destination.$buffer)){ 
     echo "</br>True</br>"; 
    }else{ 
     echo "</br>False</br>"; 
    }; 
}; 
?> 

код проходит через, как и ожидалось, и я получаю список всех имен файлов внутри файла .txt, но всегда с «False», и распорки каталогов назначения пустой.

Это проблема конфигурации с XAMPP или у меня есть некоторые ошибки в моем коде?

// Изменить: Пример файла .txt

_1_20081008_2089220027.jpg 
_2_20081008_1467211531.jpg 
_3_20081008_1388589383.jpg 
_4_20081008_1327719202.jpg 
_5_20081008_1691023977.jpg 
_6_20081008_1494910005.jpg 
_7_20081008_1101725852.jpg 
_8_20081008_1123823020.jpg 
_9_20081008_1092805517.jpg 
_10_20081008_1752481220.jpg 
_11_20081008_1420860420.jpg 
_12_20081008_1803761675.jpg 
_13_20081008_1199173697.jpg 
_14_20081008_1877520136.jpg 
_15_20081008_1344646088.jpg 
_16_20081008_1918096785.jpg 
_17_20081008_1895142423.jpg 
_18_20081008_1841060330.jpg 
_19_20081008_1438833482.jpg 
_20_20081008_1871628956.jpg 
_21_20081008_1141581267.jpg 
_22_20081008_1416565613.jpg 
_23_20081008_1868584205.jpg 
_24_20081008_1265588276.jpg 
_25_20081008_2023422375.jpg 
_26_20081008_1410663038.jpg 
_27_20081008_1398533505.jpg 
_28_20081008_1413417063.jpg 
_29_20081008_1827605061.jpg 
_30_20081008_1883399407.jpg 
_31_20081008_1468535188.jpg 
_32_20081008_1742608861.jpg 
_33_20081008_1818421650.jpg 
_34_20081008_1682119571.jpg 
_35_20081008_1066121950.jpg 
+0

копии, я получаю выход имен, но всегда с «False», а каталог Дестани остается пустым –

+0

Вы можете оставить образец этого файла CSV – bystwn22

+0

Как PHP получает имена из файла .txt, я думаю, что это может быть более полезным :) –

ответ

0

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

Просто измените array_push($buffers, $buffer); на array_push($buffers, trim($buffer));

Потому что ваше имя файла содержит новую строку в конце концов, что мешает вам копирования файлов.
И всегда включайте error_reporting при кодировании :)

<?php 
    $source  = ""; 
    $destination = "Kompaniefest05/"; 

    if (!file_exists($destination)) { 
    mkdir($destination, 0755); 
    } 

    $buffers = file($source."names.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); 

    foreach($buffers as $buffer) { 
    $fcopy = $source.trim($buffer); 
    $tcopy = $destination.trim($buffer); 

    echo "Copying ".$fcopy." to ".$tcopy." - "; 
    if (file_exists($fcopy)) { 
     if (copy($fcopy, $tcopy)) { 
     echo "SUCCESS"; 
     } 
     else { 
     echo "FAILED"; 
     } 
    } 
    else { 
     echo "FILE MISSING"; 
    } 
    echo "<br />"; 
    } 
?> 
+0

WOW .. Это здорово и прекрасно, спасибо большое! –

0

Вы можете убедиться, что идентифицированный пользователь получил разрешение на запись в директорию $ назначения?

Я хотел бы также проверить, если $ назначения существует и каталог с помощью

is_dir 
+0

Спасибо за подсказку с разрешениями, я дал разрешение на учетную запись Windows, но должен ли я также предоставить некоторые из них XAMPP? Если да, то как мне это сделать? Я сделаю часть «is_dir» :) –