Muat naik fail PHP
Gambaran Keseluruhan Muat Naik Fail
Fungsi muat naik fail ialah fungsi yang sering digunakan dalam kehidupan dalam talian. Muat naik fail boleh dicapai dengan mudah menggunakan PHP Proses khusus adalah seperti berikut:
Pilih fail dalam bentuk-> Jana fail sementara-> -> ; Rekod maklumat fail untuk pengurusan yang lebih mudah.
Dalam fungsi muat naik fail, isu berikut perlu dipertimbangkan:
1 Hadkan saiz fail yang dimuat naik
2 ??>
3. Hanya benarkan pengguna yang dipercayai untuk memuat naik fail untuk menghalang penyerahan jauh4 >melalui PHP , anda boleh memuat naik fail ke pelayan. Contoh dalam bab ini dilengkapkan di bawah projek ujian Struktur direktori ialah:ujian
|-----bentuk. html # Fail borang
|-----upload_file.php # kod muat naik php
Muat turun kod sumber
Buat fail muat naik borang
Amat berguna untuk membolehkan pengguna memuat naik fail daripada borang.
Lihat borang HTML di bawah untuk memuat naik fail: <html>
<head>
<meta charset="utf-8">
<title>php中文網(wǎng)(php.cn)</title>
</head>
<body>
<form action="upload_file.php" method="post" enctype="multipart/form-data">
<label for="file">文件名:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="提交">
</form>
</body>
</html>
Simpan kod di atas ke dalam fail form.html.
Beberapa nota tentang borang HTML di atas disenaraikan di bawah:
<form> Atribut enctype teg menentukan jenis kandungan yang hendak digunakan semasa menyerahkan borang. Gunakan "multipart/form-data" apabila borang anda memerlukan data binari, seperti kandungan fail. Atribut type="file" bagi teg
<input> menentukan bahawa input harus diproses sebagai fail. Contohnya, semasa pratonton dalam penyemak imbas, anda akan melihat butang semak imbas di sebelah kotak input.
Nota: Membenarkan pengguna memuat naik fail merupakan risiko keselamatan yang besar. Sila benarkan hanya pengguna yang dipercayai untuk melakukan operasi muat naik fail.
Buat skrip muat naik
Fail "upload_file.php" mengandungi kod untuk memuat naik fail:
<?php if ($_FILES["file"]["error"] > 0) { echo "錯(cuò)誤:" . $_FILES["file"]["error"] . "<br>"; } else { echo "上傳文件名: " . $_FILES["file"]["name"] . "<br>"; echo "文件類型: " . $_FILES["file"]["type"] . "<br>"; echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>"; echo "文件臨時(shí)存儲(chǔ)的位置: " . $_FILES["file"]["tmp_name"]; } ?>
Dengan menggunakan PHP global array $_FILES, anda boleh memuat naik fail dari komputer klien ke pelayan jauh. Parameter pertama ialah nama input borang dan subskrip kedua boleh menjadi "nama", "jenis", "saiz", "tmp_name" atau "ralat". Seperti yang ditunjukkan di bawah:
$_FILES["fail"]["nama"] - nama fail yang dimuat naik
$_FILES["fail"]["jenis"] - jenis daripada fail yang dimuat naik
$_FILES["file"]["size"] - Saiz fail yang dimuat naik dalam bait
$_FILES["file"]["tmp_name"] - Disimpan pada pelayan Nama salinan sementara fail
$_FILES["file"]["error"] - Kod ralat yang disebabkan oleh muat naik fail
Ini ialah cara yang sangat mudah untuk memuat naik fail. Atas sebab keselamatan, anda harus menambah sekatan ke atas siapa yang dibenarkan untuk memuat naik fail.
Had Muat Naik
Dalam skrip ini, kami telah menambah had pada muat naik fail. Pengguna hanya boleh memuat naik fail .gif, .jpeg, .jpg, .png dan saiz fail mestilah kurang daripada 200 kB:
<?php // 允許上傳的圖片后綴 $allowedExts = array("gif", "jpeg", "jpg", "png"); $temp = explode(".", $_FILES["file"]["name"]); $extension = end($temp); // 獲取文件后綴名 if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/pjpeg") || ($_FILES["file"]["type"] == "image/x-png") || ($_FILES["file"]["type"] == "image/png")) && ($_FILES["file"]["size"] < 204800) // 小于 200 kb && in_array($extension, $allowedExts)) { if ($_FILES["file"]["error"] > 0) { echo "錯(cuò)誤:: " . $_FILES["file"]["error"] . "<br>"; } else { echo "上傳文件名: " . $_FILES["file"]["name"] . "<br>"; echo "文件類型: " . $_FILES["file"]["type"] . "<br>"; echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>"; echo "文件臨時(shí)存儲(chǔ)的位置: " . $_FILES["file"]["tmp_name"]; } } else { echo "非法的文件格式"; } ?>
Simpan fail yang dimuat naik
di atas Contoh mencipta salinan sementara fail yang dimuat naik dalam folder sementara PHP pelayan.
Salinan sementara ini akan hilang apabila skrip tamat. Untuk menyimpan fail yang dimuat naik, kami perlu menyalinnya ke lokasi lain:
<?php // 允許上傳的圖片后綴 $allowedExts = array("gif", "jpeg", "jpg", "png"); $temp = explode(".", $_FILES["file"]["name"]); echo $_FILES["file"]["size"]; $extension = end($temp); // 獲取文件后綴名 if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/pjpeg") || ($_FILES["file"]["type"] == "image/x-png") || ($_FILES["file"]["type"] == "image/png")) && ($_FILES["file"]["size"] < 204800) // 小于 200 kb && in_array($extension, $allowedExts)) { if ($_FILES["file"]["error"] > 0) { echo "錯(cuò)誤:: " . $_FILES["file"]["error"] . "<br>"; } else { echo "上傳文件名: " . $_FILES["file"]["name"] . "<br>"; echo "文件類型: " . $_FILES["file"]["type"] . "<br>"; echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>"; echo "文件臨時(shí)存儲(chǔ)的位置: " . $_FILES["file"]["tmp_name"] . "<br>"; // 判斷當(dāng)期目錄下的 upload 目錄是否存在該文件 // 如果沒有 upload 目錄,你需要?jiǎng)?chuàng)建它,upload 目錄權(quán)限為 777 if (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " 文件已經(jīng)存在。 "; } else { // 如果 upload 目錄不存在該文件則將文件上傳到 upload 目錄下 move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); echo "文件存儲(chǔ)在: " . "upload/" . $_FILES["file"]["name"]; } } } else { echo "非法的文件格式"; } ?>
Skrip di atas menyemak sama ada fail itu sudah wujud Jika ia tidak wujud, ia menyalin fail tersebut ke direktori bernama "muat naik". .
Operasi demonstrasi muat naik fail adalah seperti berikut: