2013-06-26 48 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”部分:) –