PHP File Upload
- Previous Page PHP File Creation/Write
- Next Page PHP Cookies
Sa pamamagitan ng PHP, maaaring ilagay ang file sa server.
Lumikha ng file upload form
Ang pagbibigay ng kapangyarihan sa mga user na mag-upload ng file mula sa form ay napaka-mahalaga.
Pansin ang sumusunod na HTML form na naglalaman ng code para sa pag-upload ng file:
<html> <body> <form action="upload_file.php" method="post" enctype="multipart/form-data"> <label for="file">Filename:</label> <input type="file" name="file" id="file" /> <br /> <input type="submit" name="submit" value="Submit" /> </form> </body> </html>
Pansin ang sumusunod na impormasyon tungkol sa form na ito:
Ang attribute na enctype ng <form> tag ay nagtutukoy kung anong uri ng content ang gagamitin kapag isinasubmit ang form. Kapag ang form ay kailangan ng binary data, tulad ng content ng file, gamitin ang "multipart/form-data".
Ang attribute na type="file" ng <input> tag ay nagtutukoy na kung ano ang gagamitin bilang file ang input. Halimbawa, kapag pinag-preview sa browser, makikita ang buton na mag-browse sa tabi ng input box.
Note:Ang pagbibigay ng kapangyarihan sa mga user na mag-upload ng file ay isang malaking panganib sa seguridad. Mangyaring ipahintulot lamang ang mga mapagkakatiwala na user na gumawa ng operasyon ng pag-upload ng file.
Lumikha ng upload script
"upload_file.php" na ang file ay may kasamang code para sa pag-upload ng file:
<?php if ($_FILES["file"]["error"] > 0) { echo "Error: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br />"; echo "Type: " . $_FILES["file"]["type"] . "<br />"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; echo "Stored in: " . $_FILES["file"]["tmp_name"]; } ?>
Sa pamamagitan ng paggamit ng global na array ng PHP $_FILES, maaari mong i-uplaod ang file mula sa kompyuter ng customer papunta sa remote server.
Ang unang argumento ay ang pangalan ng input ng form, ang ikalawang index ay maaaring maging "name", "type", "size", "tmp_name", o "error". Kung gayon:
- $_FILES["file"]["name"] - Ang pangalan ng na-uplaod na file
- $_FILES["file"]["type"] - Ang uri ng na-uplaod na file
- $_FILES["file"]["size"] - Ang laki ng na-uplaod na file, sa mga bybent
- $_FILES["file"]["tmp_name"] - Ang pangalan ng pansamantalang kopya ng file na nasa server
- $_FILES["file"]["error"] - Ang error code na dulot ng pag-uplaod ng file
Ito ay isang napakasimpleng paraan ng pag-uplaod ng file. Dahil sa seguridad, dapat mong dagdagan ang mga limitasyon kung sino ang may karapatang mag-uplaod ng file.
Limitasyon sa pag-uplaod
Sa script na ito, nagdagdag kami ng mga limitasyon sa pag-uplaod ng file. Ang user ay pwedeng mag-uplaod lamang ng .gif o .jpeg file, ang laki ng file ay dapat mababang 20 kb:
<?php if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/pjpeg")) && ($_FILES["file"]["size"] < 20000)) { if ($_FILES["file"]["error"] > 0) { echo "Error: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br />"; echo "Type: " . $_FILES["file"]["type"] . "<br />"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; echo "Stored in: " . $_FILES["file"]["tmp_name"]; } } else { echo "Invalid file"; } ?>
Note:Para sa IE, dapat ma-identify ang uri ng file na jpg bilang pjpeg, para sa FireFox, dapat ito ay jpeg.
I-salba ang na-uplaod na file
Ang halimbawa sa itaas ay gumawa ng isang pansamantalang kopya ng na-uplaod na file sa PHP temporary folder ng server.
Ang pansamantalang kopya ng file na ito ay mawawala kapag tapusin ang script. Upang isalba ang na-uplaod na file, kailangan naming kopyahin ito sa ibang posisyon:
<?php if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/pjpeg")) && ($_FILES["file"]["size"] < 20000)) { if ($_FILES["file"]["error"] > 0) { echo "Return Code: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br />"; echo "Type: " . $_FILES["file"]["type"] . "<br />"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />"; if (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " already exists. "; } else { move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; } } } else { echo "Invalid file"; } ?>
The script above checks if the file already exists, and if not, copies the file to the specified folder.
Note:This example saves the file to a new folder named "upload".
- Previous Page PHP File Creation/Write
- Next Page PHP Cookies