Pemprosesan borang PHP: muat naik dan sekatan fail
Dalam pembangunan web, muat naik fail ialah keperluan fungsian biasa. Sebagai bahasa bahagian pelayan yang digunakan secara meluas, PHP menyediakan pelbagai fungsi dan kaedah untuk mengendalikan muat naik fail. Artikel ini akan memperkenalkan cara menggunakan PHP untuk melaksanakan fungsi muat naik fail dan mengehadkan saiz dan jenis fail.
1. Langkah asas untuk muat naik fail
Untuk melaksanakan fungsi muat naik fail, anda perlu melalui langkah asas berikut:
1 Buat borang HTML dan nyatakan atribut enctype borang sebagai "multipart/form-. data" untuk memuat naik fail.
<form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" value="上传"> </form>
2 Tulis skrip PHP dan gunakan pembolehubah global $_FILES dalam skrip untuk mendapatkan maklumat fail yang dimuat naik.
$targetDir = "uploads/"; // 上传文件保存的目录 $targetFile = $targetDir . basename($_FILES["file"]["name"]); // 上传文件保存的路径 if (move_uploaded_file($_FILES["file"]["tmp_name"], $targetFile)) { echo "文件上传成功"; } else { echo "文件上传失败"; }
$_FILES di sini ialah tatasusunan bersekutu yang mengandungi maklumat tentang fail yang dimuat naik, seperti saiz fail, jenis fail, nama fail sementara, dsb.
3 Tetapkan laluan sasaran muat naik fail dan gunakan fungsi move_uploaded_file() untuk mengalihkan fail dari direktori sementara ke direktori yang ditentukan.
2. Had saiz fail
Untuk memastikan keselamatan dan prestasi pelayan, kami perlu mengehadkan saiz fail yang dimuat naik. PHP menyediakan dua pilihan konfigurasi yang berkaitan: upload_max_filesize dan post_max_size.
upload_max_filesize digunakan untuk mengawal saiz maksimum satu fail Nilainya boleh menjadi integer dalam bait atau rentetan dalam unit K, M atau G. Contohnya:
ini_set("upload_max_filesize", "10M");
post_max_size digunakan untuk mengehadkan saiz maksimum keseluruhan permintaan HTTP Nilainya juga boleh menjadi integer atau rentetan. Kita perlu menetapkan nilainya kepada nilai yang lebih besar daripada atau sama dengan upload_max_filesize. Contohnya:
ini_set("post_max_size", "10M");
3. Sekatan jenis fail
Dalam projek sebenar, kami mungkin hanya mahu pengguna memuat naik jenis fail tertentu, contohnya, hanya fail imej dibenarkan untuk dimuat naik. PHP menyediakan fungsi fifo_file() untuk mendapatkan jenis fail.
Mula-mula, kita perlu mendayakan sambungan info fail dalam fail php.ini:
extension=php_fileinfo.dll // Windows环境下 extension=php_fileinfo.so // Linux环境下
Kemudian, gunakan fungsi finfo_file() untuk mendapatkan jenis fail:
$finfo = finfo_open(FILEINFO_MIME_TYPE); $fileType = finfo_file($finfo, $_FILES["file"]["tmp_name"]); finfo_close($finfo);
Seterusnya, kita boleh menggunakan pernyataan bersyarat untuk menentukan sama ada fail jenis memenuhi keperluan, Dan lakukan operasi yang sepadan:
if ($fileType == "image/jpeg" || $fileType == "image/png") { // 上传文件操作 } else { echo "只允许上传JPEG和PNG图片文件"; }
IV Contoh kod lengkap
<?php $targetDir = "uploads/"; $targetFile = $targetDir . basename($_FILES["file"]["name"]); if ($_FILES["file"]["size"] > 1024 * 1024) { echo "文件过大"; } elseif ($_FILES["file"]["error"] != 0) { echo "文件上传失败"; } elseif ($_FILES["file"]["type"] != "image/jpeg" && $_FILES["file"]["type"] != "image/png") { echo "只允许上传JPEG和PNG图片文件"; } elseif (move_uploaded_file($_FILES["file"]["tmp_name"], $targetFile)) { echo "文件上传成功"; } else { echo "文件上传失败"; } ?>
Ringkasan:
Artikel ini memperkenalkan langkah asas menggunakan PHP untuk melaksanakan fungsi muat naik fail, dan mengehadkan saiz dan jenis fail. . Dengan menetapkan pilihan konfigurasi dengan sewajarnya, kami boleh memastikan keselamatan dan prestasi pelayan. Selain itu, dengan menggunakan fungsi fifo_file() untuk mendapatkan jenis fail, kami boleh mengehadkan lagi jenis fail yang dimuat naik oleh pengguna untuk memenuhi keperluan khusus. Saya harap artikel ini dapat membantu pembaca memahami dan melaksanakan fungsi muat naik fail.
Atas ialah kandungan terperinci Pemprosesan borang PHP: muat naik fail dan sekatan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!