Qua bài trước mình đã giới thiệu cho các bạn về Form và các phương thức POST và GET trong form,sang bài này chúng ta sẽ thực hành sang chức năng rất quan trọng đó chính là Upload file trong PHP.Đây là chức năng mà hầu như website nào cũng cần phải có.Ví dụ như khi chúng ta viết bài,bán sản phẩm thì đều cần ảnh minh họa cho bài viết hoặc sản phẩm.
– Để upload được file, chúng ta cần thêm thuộc tính enctype=”multipart/form-data” cho form, ta dùng thẻ input type=”file” để upload file
– Sau đây chúng ta sẽ tạo 1 form để thực hiện chức năng tải file lên:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <html> <!-- the head --> <head> <meta http-equiv="Content-Type" content="text/html ;charset=utf-8" /> </head> <body> <h1>Upload file</h1> <form method="post" action="upload.php" enctype="multipart/form-data"> <label>Ảnh minh họa:</label> <input type="file" id="image" name="image"> <br /> <input type="submit" class="button" value="Upload" name='submit' /> </form> </body></html> |
Và sẽ được kết quả như sau:
– Các bạn thấy form trên có thuộc tính
Bây giờ chúng ta sẽ thực hiện viết code xử lý dữ liệu trong file upload.php như sau:
action="upload.php",như vậy khi form được submit toàn bộ dữ liệu trong form sẽ được gửi tới trang upload.php theo phương thức POSTBây giờ chúng ta sẽ thực hiện viết code xử lý dữ liệu trong file upload.php như sau:
1 2 3 4 5 6 7 8 9 10 | <?phpif(isset($_POST['submit'])){ //thực hiện upload}else{ echo "Vui lòng chọn hình ảnh trước";}?> |
+ Hàm
– Để upload file từ máy lên hệ thống ta cần sử dụng hàm:
isset() là hàm kiểu tra sự tồn tại của biến nào đó, Với đoạn code trên trước tiên chúng ta cần kiểm tra xem người dùng đã ấn nút submit form chưa thông qua câu điều kiện isset($_POST['submit'])– Để upload file từ máy lên hệ thống ta cần sử dụng hàm:
1 | move_uploaded_file(tên_file_tạm, đường dẫn tới hệ thống). |
– Khi thực hiện upload hệ thống sẽ tự sinh ra 1 biến môi trường có tên là
$_FILES[‘image'] ,đây là biến chứa mảng thông tin của file upload lên nó bao gồm các thông tin sau:$_FILES['image']['name']: tên file$_FILES['image'][‘tmp_name']: tên file tạm (sẽ mất đi khi upload thành công),và đây chính là tham số thứ nhất đựoc truyền vào trong hàmmove_uploaded_fileở trên$_FILES['image']['type']: Kiểu của file,dựa vào biến này để kiểm tra các file được phép tải lên$_FILES['image']['size']: kích thước của file (byte),dựa vào biến này để kiểm tra dung lượng tối đa được phép tải lên
– Để thực hiện kiểm tra điều kiện file tải lên chỉ là file ảnh ta có thể dựa vào biến
$_FILES['image']['type'] và kiểm tra như sau:1 2 3 4 5 6 7 8 9 10 11 | <?php if($_FILES['file']['type'] == "image/jpeg" || $_FILES['file']['type'] == "image/png" || $_FILES['file']['type'] == "image/gif"){ // là file ảnh // Thực hiện upload }else{ // không phải file ảnh echo "Kiểu file không hợp lệ"; }?> |
– Để thêm điều kiện giới hạn dung lượng tối đa của file upload lên ta dựa vào biến
$_FILES['image']['size'] và sẽ kiểm tra như sau,ví dụ ta giới hạn dung lượng tối đa là 1MB ta kiểm tra như sau (ví file size tính theo byte lên ta đổi (1MB = 1*1024 kb * 1024 bytes = 1048576) ):1 2 3 4 5 6 | <?php if($_FILES['file']['size'] > 1048576){ echo "File không được lớn hơn 1mb"; }else{ //dung lượng hợp lệ,thực hiện code upload } |
Như vậy sau khi đã có đầy đủ các thông tin cho việc tải file lên chúng ta sẽ có đoạn code đầy đủ như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <?phpif(isset($_POST['submit'])){ // Người dùng đã ấn submit if($_FILES['file']['name'] != NULL){ // Đã chọn file // Tiến hành code upload file if($_FILES['file']['type'] == "image/jpeg" || $_FILES['file']['type'] == "image/png" || $_FILES['file']['type'] == "image/gif"){ // là file ảnh // Tiến hành code upload if($_FILES['file']['size'] > 1048576){ echo "File không được lớn hơn 1mb"; }else{ // file hợp lệ, tiến hành upload $path = 'upload/'.$_FILES['file']['name']; // Đường dẫn chưa file upload // Gọi hàm upload file move_uploaded_file($_FILES['file']['tmp_name'], $path); echo "Upload thành công <br />"; echo "Tên file : ".$name."<br />"; echo "Kiểu file : ".$_FILES['file']['type']."<br />"; echo "File size : ".$_FILES['file']['size']; } }else{ // không phải file ảnh echo "Kiểu file không hợp lệ"; } }else{ echo "Vui lòng chọn file"; }}?> |
Kết thúc bài viết: Qua bài này các bạn đã có thể tự tạo ra chức năng upload ảnh minh họa cho sản phẩm rồi,các bạn có thể lưu lại tên file ảnh vào CSDL để sau này hiển thị ra.Sang bài sau mình sẽ hướng dẫn cho các bạn 1 phần rất quan trọng trong lập trình php,đó chính là mảng.
- See more at: http://hocphp.info/upload-file-trong-php/#sthash.pWNzM5bN.dpuf
Không có nhận xét nào:
Đăng nhận xét