PHP/PHP - ფაილის ატვირთვა
ფაილის ატვირთვის ფორმის შექმნა
რედაქტირებაქვემოთ მოყვანილია ფაილების ატვირთვის HTML ფორმა:
<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>
გავითვალისწინოთ შემდეგი HTML ფორმისათვის:
- enctype ატრიბუტი <form> ტეგისათვის სპეციფიკაციას აკეთებს, თუ რომელი შემცველობითი ტიპი გამოიყენოს ფორმის გამოყენებისას.
- "multipart/form-data" გამოიყენება, როდესაც ფორმა მოითხოვს ბინარულ მონაცემებს, როგორიცაა ასატვირთი ფაილის შემცველობა.
შენიშვნა: მომხმარებელთათვის ფაილების ატვირთვის უფლების მიცემა წარმოადგენს დიდ რისკს.
ატვირთვის სკრიპტის შექმნა
რედაქტირება"upload_file.php" შეიცავს ატვირთვის კოდს:
<?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"]; } ?>
გლობალური PHP $_FILES მასივების გამოყენებით ჩვენ შეგვიძლია კომპიუტერიდან სერვერზე ავტვირთოთ ფაილები.
პირველი პარამეტრი არის input სახელი, ხოლო მეორე პარამეტრი შესაძლოა იყოს ნებისმიერი "name", "type", "size", "tmp_name", ან "error". ამის მსგავსად:
- $_FILES["file"]["name"] - ატვირთული ფაილის სახელი
- $_FILES["file"]["type"] - ატვირთული ფაილის ტიპი
- $_FILES["file"]["size"] - ატვირთული ფაილის ზომა ბაიტებში
- $_FILES["file"]["tmp_name"] - სერვერზე დაბრუნებული ფაილის დროებითი ასლი
- $_FILES["file"]["error"] - შეცდომის კოდი
ეს არის ფაილების ატვირთვის ძალიან მარტილი გზა. დაცვისათვის, დავაწესოთ შეზღუდვები ასატვირთი ფაილების გაფართოებებზე.
შეზღუდვა ატვირთვაზე
რედაქტირებასკრიპტში ჩვენ ჩავამატებთ ფაილის ატვირთვის ზოგიერთ შეზღუდვებს. მომხმარებელს შეეძლება ატვირთოს მხოლოდ .gif, ან .jpeg ფაილები და ფაილის ზომა არ უნდა აღემატებოდეს 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"; } ?>
შენიშვნა: IE-სათვის jpg ფაილების ცნობისათვის ტიპი უნდა იყოს pjpeg, ხოლო FireFox-სათვის ტიპი უნდა იყოს jpeg.
ატვირთული ფაილის დამახსოვრება
რედაქტირებაქვემოთ მოყვანილია მაგალითები, ატვირთული ფაილების დროებითი ასლის შექმნისა.
ფაილის დროები ასლები ქრებიან, როდესაც სკრიპტი ასრულებს მუშაობას. ატვირთული ფაილის შესანახად ჩვენ გვჭირდება მისი სხვა ადგილზე კოპირება:
<?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($_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " already exists. "; } else { move_uploaded_file($_FILES["file"]["tmp_name"], $_FILES["file"]["name"]); echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; } } } else { echo "Invalid file"; } ?>