0

古いWebサイトから画像を整理するために、ある種のPHPファイルを作成しました。その古いサイトの管理者はサブフォルダーを使用していなかったので、1 つのディレクトリに何千もの画像がありました。

ファイル名とカテゴリを含むcsvファイルを取得しました。このファイル名を1行ずつコピーして、PHPにそれらをデステニーディレクトリにコピーさせたいと思います。

これはローカル マシンの 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
4

1 に答える 1

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 />";
  }
?>
于 2013-06-26T09:42:37.667 に答える