Rumah > pembangunan bahagian belakang > tutorial php > Pemprosesan borang PHP: muat naik fail dan sekatan

Pemprosesan borang PHP: muat naik fail dan sekatan

王林
Lepaskan: 2023-08-07 15:46:01
asal
1746 orang telah melayarinya

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>
Salin selepas log masuk

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 "文件上传失败";
}
Salin selepas log masuk

$_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");
Salin selepas log masuk

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");
Salin selepas log masuk

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环境下
Salin selepas log masuk

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);
Salin selepas log masuk

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图片文件";
}
Salin selepas log masuk

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 "文件上传失败";
}
?>
Salin selepas log masuk

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan