Namakan semula fail secara berurutan pada muat naik berdasarkan fail sedia ada dalam direktori
P粉310931198
P粉310931198 2023-09-10 13:14:12
0
1
542

Saya menggunakan kod muat naik (php) ini yang saya temui dalam talian untuk borang muat naik imej.

Saya sedar sudah ada banyak soalan/jawapan di laman web tentang "menamakan fail" semasa memuat naik, dan saya telah melakukan sedikit kajian tentangnya.

Setakat ini...tiada satu pun daripada mereka nampaknya menangani secara khusus apa yang saya mahu lakukan.

Semoga ini dapat dicapai dengan melaraskan kod yang saya gunakan.

Akhirnya... Saya ingin dapat memuat naik satu fail (bukan berbilang) dan menamakan fail secara automatik dengan nombor mudah, cth; 1, 2, 3, 4 atau 5 dll...

Tiada awalan dan tiada sambungan. Hanya nilai berangka nama.

Namun, saya ingin kod itu menyemak direktori sasaran terlebih dahulu untuk mengimbas fail "nama" yang sudah wujud.

Jadi jika fail sedia ada dalam direktori adalah 1, 2, 3, 4 dan 5..., fail baharu secara automatik akan dinamakan 6 mengikut urutan dan seterusnya.

Namun, jika fail sedia ada dalam direktori adalah 1, 2, 4 dan 5 (3 tidak wujud), fail baharu akan dimuat naik sebagai 3 untuk mengekalkan susunan.

Sebagai alternatif, untuk keperluan khusus saya, saya tidak kisah jika semua imej dalam direktori dinamakan semula dengan muat naik baharu. Pada asasnya menukar susunan supaya urutan nombor dikekalkan.

Ini ialah kod muat naik yang sedang saya gunakan:

 500000) { echo "Sorry, your file is too large."; $uploadOk = 0; } // Allow certain file formats if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" ) { echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; $uploadOk = 0; } // Check if $uploadOk is set to 0 by an error if ($uploadOk == 0) { echo "Sorry, your file was not uploaded."; // if everything is ok, try to upload file } else { if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) { echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded."; } else { echo "Sorry, there was an error uploading your file."; } } ?>

P粉310931198
P粉310931198

membalas semua (1)
P粉713866425

Anda boleh mencuba fungsi ini, ia akan menyemak sama ada fail dalam direktori dinamakan berturut-turut dan kemudian menamakan semula mereka supaya sentiasa bernombor, fungsi itu mengembalikan nombor seterusnya bagi fail yang baru dimuat naik

function get_next_file_number($target_dir) { $files = scandir($target_dir); if (false === $files) { // If false then is not a directory, you could throw an Exception here return -1; } $counter = 0; unset($files[0], $files[1]); // Delete the . and .. from array natsort($files); // Important! Sort file names naturally foreach ($files as $file) { ++$counter; $file_info = pathinfo($file); $file_name = $file_info['filename']; $extension = $file_info['extension']; if ($file_name != $counter) { $old_name = $target_dir . DIRECTORY_SEPARATOR . $file; $new_name = $target_dir . DIRECTORY_SEPARATOR . $counter . "." . $extension; if (!file_exists($new_name)) { rename($old_name, $new_name); } else { // Oops trying to rename to a file that already exists, this shouldn't happen! } //echo "renamed: " . $old_name . " to " . $new_name, "
"; } } return $counter + 1; }

Bagaimana untuk melaksanakan?

// ..... // You can check the returned value, if it is -1 you know there was an error $next_number = get_next_file_number($target_dir); $new_target_file = $target_dir . $next_number . "." . $imageFileType; // Here you can make sure the file does not exists... just to make sure... // Here move the uploaded file with the next number if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $new_target_file)) { echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded."; } // .....
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!