2

私はこの奇妙な問題を抱えています。

1.jpg、2.jpg、3.jpg、4.jpg、5.jpg というファイルがあります。

さて、並べ替えができるようにしたいので、たとえば 3 を 2 にしたい場合は、3.jpg ==> 1b.jpg と名前を変更すればよいと思いました。これにより、彼は 1 と 2 の間に配置されます。

フォルダ内のすべてのファイルの名前を変更するだけです。しかし、これはうまくいかないようです...

私のコードは次のとおりです。

// Part 1

$fileUp = $_POST['imageURL'];
$url = $_SERVER['DOCUMENT_ROOT'].$fileUp;
$fileParts = pathinfo($fileUp);
$fileName = $fileParts['filename'];
$fileExt = $fileParts['extension'];
$fileFolder = $fileParts['dirname'];
$newName = $fileName - 2;
$newFullName = $newName . 'b.' . $fileExt;

$directory = $_SERVER['DOCUMENT_ROOT'].$fileFolder.'/';

rename($url, $directory.$newFullName);

// Part 2

$dirFiles = array();
if ($handle = opendir($directory)) {
    while (false !== ($file = readdir($handle))) {  
        if ($file != "." && $file != "..") {
            $dirFiles[] = $file;
        }
    }
    closedir($handle);
}

sort($dirFiles);
$i = 1;
foreach($dirFiles as $file)
{
    $fileParts = pathinfo($file);
    $fileExt = $fileParts['extension'];
    $newName = $i . '.' . $fileExt;
    rename($directory.$file, $directory.$newName);
    $i++;
}

パート 1 では、基本的にアップするファイルの名前を変更します。これはうまくいきます!ただし、その後 readdir を使用してファイルをリロードすると、このイメージはあるべき場所にありません (多くの場合、最後に)。

パート 2 では、すべてのファイルの名前を変更します。しかし、その2を有効にすると、アップする画像の前の画像が消えてしまう!

たとえば、「1.jpg、2.jpg、3.jpg」があり、2.jpg をアップしたい場合、「2.jpg、3.jpg」になります (2 と 3 の避難所'名前が変わって、1.jpg が消えてしまった...)

すべてのヘルプは非常に高く評価されています!

4

1 に答える 1

0

画像を並べ替える方法はお勧めしません。非効率的であり、私が理解しているように、人々が並べ替えを続けると、長くてぎこちないファイル名になってしまいます。データベースにアクセスできますか? テーブルエントリのインデックスを変更してソートできるファイル名にインデックスをマップするテーブルをそこに持つことができます。

于 2013-06-07T10:45:25.590 に答える