2013-06-26 47 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文件內的所有文件名列表,但始終以「假」,並在目標目錄住宿空。

這是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

副本,我得到的名字輸出,但始終以「假」和destani目錄保持空白 –

+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」部分:) –