Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Hantar fail dalam PHP

Hantar fail dalam PHP

WBOY
WBOYasal
2023-05-24 08:51:221068semak imbas

PHP ialah bahasa skrip sebelah pelayan yang boleh digunakan untuk memproses data borang, menjana halaman dinamik, dsb. Satu senario aplikasi biasa ialah memuat naik fail melalui borang. Artikel ini akan memperkenalkan fungsi muat naik fail dalam PHP, termasuk pemprosesan borang muat naik, penyimpanan fail yang dimuat naik, mengehadkan jenis dan saiz fail yang dimuat naik, dsb.

1. Pemprosesan borang muat naik

Dalam HTML, anda boleh membuat borang melalui teg borang dan menggunakan atribut type="file" dalam teg input untuk membenarkan memuat naik fail. Dalam PHP, anda boleh menggunakan pembolehubah global $_FILES untuk mendapatkan maklumat fail yang dimuat naik.

Andaikan borang kami mengandungi teg input untuk memuat naik fail dan butang hantar:

11b6fd11255bf39aea2e39bb793902ba
e1afba264bef770f92ac9a2c4a571c26
911f4ad4d66a36c39659a323a3785a5a

Terdapat beberapa perkara yang perlu diperhatikan di sini:

  1. Atribut tindakan menentukan alamat untuk penyerahan borang, iaitu skrip pemprosesan untuk memuat naik fail. Di sini kami menggunakan fail upload.php.
  2. Atribut kaedah menentukan kaedah penyerahan borang, di sini kaedah siaran digunakan.
  3. Atribut enctype menentukan kaedah pengekodan data borang Kami perlu menggunakan data berbilang bahagian/borang untuk membenarkan memuat naik fail.

Seterusnya, kendalikan permintaan muat naik fail dalam fail upload.php.

2. Penyimpanan fail yang dimuat naik

Pertama, anda perlu menentukan sama ada fail yang dimuat naik itu wujud Jika ia wujud, anda boleh mendapatkan maklumat berkaitan fail yang dimuat naik melalui tatasusunan $_FILES.

if( isset($_FILES["fileToUpload"])) {

$file_name = $_FILES["fileToUpload"]["name"];
$file_tmp = $_FILES["fileToUpload"]["tmp_name"];
$file_size = $_FILES["fileToUpload"]["size"];

}

Antaranya, nama fail boleh diperolehi melalui atribut $name, the saiz fail boleh diperolehi melalui atribut $size, dan laluan fail sementara Boleh diperoleh melalui atribut $tmp_name.

Seterusnya, anda perlu mengalihkan fail yang dimuat naik ke folder sasaran Di sini gunakan fungsi move_uploaded_file():

$target_dir = "uploads/";
$target_file = $target_dir. . basename($file_name);
if(move_uploaded_file($file_tmp, $target_file)) {

echo "The file ". basename($file_name). " has been uploaded.";

} else{

echo "Sorry, there was an error uploading your file.";

}

Dalam kod di atas , $target_dir ialah direktori storan bagi fail yang dimuat naik, di mana fungsi basename() digunakan untuk mendapatkan nama fail. Memindahkan fail menggunakan fungsi move_uploaded_file(), di mana parameter pertama ialah laluan sementara fail dan parameter kedua ialah laluan sasaran. Jika fail berjaya dialihkan, mesej muat naik yang berjaya dikembalikan kepada pengguna jika tidak, mesej muat naik yang gagal dikembalikan.

3. Hadkan jenis dan saiz fail yang dimuat naik

Untuk memastikan keselamatan dan prestasi sistem muat naik, kami perlu mengehadkan fail yang dimuat naik. Ini termasuk kedua-dua jenis fail dan saiz fail.

  1. Sekatan jenis fail

Kami menggunakan fungsi in_array() PHP untuk menentukan sama ada jenis fail yang dimuat naik adalah sah. Secara khusus, anda perlu menentukan tatasusunan jenis fail yang dibenarkan untuk dimuat naik, dan kemudian gunakan fungsi in_array() untuk menentukan sama ada jenis fail yang dimuat naik berada dalam tatasusunan jenis fail yang dibenarkan untuk dimuat naik.

$allowed_types = array('jpg', 'jpeg', 'png', 'gif');
$file_type = strtolower(pathinfo($file_name,PATHINFO_EXTENSION));
if( in_array($file_type, $allowed_types)){

// 合法文件类型

} else{

echo "Sorry, only JPG, JPEG, PNG, GIF files are allowed.";

}

Dalam kod di atas, fungsi pathinfo() digunakan untuk mendapatkan fail nama akhiran , fungsi strtolower() menukarnya kepada aksara kecil dan fungsi in_array() menentukan sama ada ia berada dalam tatasusunan jenis fail yang dibenarkan untuk dimuat naik.

  1. Had saiz fail

Kami menggunakan konfigurasi muat naik fail PHP untuk mengehadkan saiz fail yang dimuat naik, yang boleh ditetapkan dalam fail php.ini, contohnya:

post_max_size=8M
upload_max_filesize=2M

post_max_size di sini mewakili panjang maksimum data POST dan upload_max_filesize mewakili saiz maksimum fail yang dimuat naik. Perlu diingat bahawa jika saiz fail tidak memenuhi had, tatasusunan $_FILES tidak akan mengandungi maklumat tentang fail yang dimuat naik.

Ringkasan:

Melaksanakan fungsi muat naik fail dalam PHP memerlukan langkah berikut:

  1. Buat borang yang mengandungi teg input muat naik fail dan butang hantar.
  2. Dalam skrip pemprosesan untuk memuat naik fail, gunakan pembolehubah global $_FILES untuk mendapatkan maklumat fail yang dimuat naik.
  3. Alihkan fail yang dimuat naik ke folder destinasi.
  4. Kuatkuasakan sekatan keselamatan dan prestasi pada fail yang dimuat naik, termasuk jenis fail dan saiz fail.

Melaksanakan fungsi muat naik fail melalui kaedah di atas boleh menyediakan aplikasi web kami dengan fungsi yang lebih kaya dan pengalaman pengguna yang lebih baik.

Atas ialah kandungan terperinci Hantar fail dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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