theo dõi

Gần nhất :

Tags

Thống kê câu hỏi

Chuyên mục : Lập trình
Topic : Php
Hỏi lúc:
Lượt xem: 3,150

Cách upload tập tin trong PHP như thế nào

Lý Bảo Nghi Lý Bảo Nghi
 06  01  00
06 bình chọn hữu ích bởi Phan Tường Vân, Lý Thanh Lam Trịnh Quang Dũng ... (tất cả)
3,150 xem 10 theo dõi 06 hữu ích hỏi –

Bạn biết ai đó có thể trả lời câu hỏi này?. Bạn có thể giúp đỡ bằng cách tìm những người giỏi nhất:

user user user user user

Hồ Bình Nguyên Hồ Bình Nguyên
 08  00  02
06 bình chọn hữu ích bởi Nguyễn Liên Hoa, Đặng Thế An Vũ Hoài Nhân ... (tất cả)

Upload file là một vấn đề quan trọng và cần thiết khi lập trình web. Chúng ta cần tải hình ảnh lên hosting, tải file ….
Đoạn code nhỏ trong php sau đây cho phép bạn làm thực hiện điều đó thật đơn giản.

Cấu hình file “php.ini”

Đầu tiên, để chắc chắn PHP cho phép upload file, chúng ta cần kiểm tra trong file php.ini. Trong file php.ini tìm đến dòng file_uploads gán = On

file_uploads = On

Thiết kế trang html

<!DOCTYPE html>
<html>
<body>
<h1>PHP - Upload file demo <a href="http://tuanitpro.com">http://tuanitpro.com</a></h1>
<form action="upload2.php" method="post" enctype="multipart/form-data">
    Chọn file upload:
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Tải lên" name="submit">
</form>
<hr/>
 
</body>
</html>

Code trang upload2.php

<?php
 
if(isset($_POST["submit"])) {
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
	// Kiểm tra file upload lên có phải là ảnh không?
 
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "File có định dạng - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "Chỉ cho phép hình ảnh.";
        $uploadOk = 0;
    }
 
// Kiểm tra file tồn tại hay chưa?
if (file_exists($target_file)) {
    echo "File đã tồn tại.";
    $uploadOk = 0;
}
// Kiểm tra kích thước file 500000 byte
if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "File quá lớn.";
    $uploadOk = 0;
}
// Kiểm tra định dạng ảnh hợp lệ không?
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "Chỉ cho phép các định dạng sau: JPG, JPEG, PNG & GIF";
    $uploadOk = 0;
}
// Kiểm tra điều kiện trước khi upload?
if ($uploadOk == 0) {
    echo "Upload thất bại.";
// Nếu ok thì cho phép upload file
} else {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        echo " File ".$target_dir. basename( $_FILES["fileToUpload"]["name"]). " upload thành công.";
        echo '<br/><img src="'.$target_dir. basename( $_FILES["fileToUpload"]["name"]).'" width="160" />';
    } else {
        echo "Upload file thất bại, vui lòng thử lại.";
    }
}
}
?>

Một số giải thích:

$target_dir = “uploads/” – thư mục chứa file tải lên. Nằm cùng cấp với upload2.php
$target_file đường dẫn tập tin được tải lên
$uploadOk=1 để kiểm tra dữ liệu trước khi upload
$imageFileType kiểm tra phần mở rộng của tập tin
Tiếp theo kiểm tra xem ảnh có thật hay bị giả mạo (vd: social.php => social.png)

Chúc các bạn thành công.

2,907 xem 06 hữu ích trả lời –
Lâm  Cường Lâm Cường
 12  00  04
05 bình chọn hữu ích bởi Dương Tấn Lợi, Hồ Bảo Anh Ngô Thanh Ngọc ... (tất cả)

Mình sẽ share code upload 1 file ảnh bằng PHP Thuần cho bạn nghiên cứu 

Bước 1 : tạo 1 form , lưu ý phải có 

enctype="multipart/form-data"

<form action="file.php" method="post" enctype="multipart/form-data">
    <input type="file" name="upfile" size="25"/><input type="submit" name="ok" value="Tải Lên"/>
</form>

Sau khi tạo xong 1 form , bạn tiếp tục viết code php như sau : 

Lưu ý , tạo 1 file data để chứ ảnh , file này đặt ngang cấp với lại 

if (isset($_POST['ok'])) {
    if ($_FILES['upfile']['name'] == NULL) {
        echo "vui lòng chọn file up";
    } else {
        $name = $_FILES['upfile']['name'];
        $type = $_FILES['upfile']['type'];
        $size = $_FILES['upfile']['size'];
        $rename = $_FILES['upfile']['tmp_name'];
        if ($type == "image/jpeg" or $type == "image/png") {
            move_uploaded_file($rename, "data/" . $name);
            echo "<h2><font color='red'>Upload file thành công</font></h2>";
        }else{
			//Thông báo lỗi
		}
	}           

Trong đó : 

        $name = $_FILES['upfile']['name']; // Tên gốc của file
        $type = $_FILES['upfile']['type']; // Định dạng của file
        $size = $_FILES['upfile']['size']; // Kích thước của file
        $rename = $_FILES['upfile']['tmp_name']; // Tên tạm của file
move_uploaded_file($rename, "data/" . $name);
//đoạn này thực hiện upfile 
//nếu ko gắn biến thì đoạn code sẽ như sau : 
move_uploaded_file($_FILES['upfile']['tmp_name'], "data/" . $_FILES['upfile']['name']);
//upfile= name input ở form trên 

Mình share code thuần lẫn OOP luôn nha

Upload File trên OOP ( Lập Trình Hướng Đối Tượng ) 

Bước 1 :

Tạo 1 file upload.php

<form method="post" action="upload.php" enctype="multipart/form-data">
    <input type="file" name="img"/><input type="submit" name="ok"/> 
</form>

Và đừng quên thiếu :

enctype="multipart/form-data"

Sau đó vẫn tạo 1 thư mục data ngang cấp với upload.php

Bây giờ , bạn tạo tip 1 file tên là Home.php và bắt đầu viết code OOP 

Ở đây , code mình viết 1 cách cơ bản nhất , dễ hiểu nhất cho các bạn lần đầu đụng vào OOP

<?php

class upload
{
    protected $_name;
    protected $_tmp;
    protected $_size;
    protected $_type;
    protected $_path = "data/";

    public function __construct($data)
    {
        $this->setname($data['name']);
        $this->settmp($data['tmp_name']);
        $this->setsize($data['size']);
        $this->settype($data['type']);
    }

    public function setname($name)
    {
        $this->_name = $name;
    }

    public function getname()
    {
        return $this->_name;
    }

    public function settmp($tmp)
    {
        $this->_tmp = $tmp;
    }

    public function gettmp()
    {
        return $this->_tmp;
    }

    public function setsize($size)
    {
        $this->_size = $size;
    }

    public function getsize()
    {
        return $this->_size;
    }

    public function settype($type)
    {
        $this->_type = $type;
    }

    public function gettype()
    {
        return $this->_type;
    }
    public function getpath(){
        return $this->_path;
    }
    public function do_upload()
    {
        if (($this->getname() != "") && ($this->gettype() == "image/png" || $this->gettype() == "image/jpeg")) {
            move_uploaded_file($this->gettmp(),$this->getpath().$this->getname());
            return TRUE;
        }else{
            return FALSE;
        }
    }
}

?>

 Mình nghĩ với kiến kiến thức cơ bản của OOP thì đoạn code trên ko có gì khó hiểu phải không

Bây giờ  tiếp tục mở lại file upload.php và viết tiếp 

Đoạn này sẽ nằm dưới form nhé 

if(isset($_POST['ok'])){
    require "home.php";
    $up=new upload($_FILES['img']);
    $img=$up->getpath().$up->getname();
    if($up->do_upload()==TRUE){
        echo "<img src='$img'>";
    }else{
        echo "Only upload image type jpeg or png";
    }
}
?>

OK !! đã xong . bây giờ mình sẽ giải thích 1 chút 

$up=new upload($_FILES['img']) 
// cái đoạn này tức là lấy cái giá trị trong cái input 
//tức là cái file bạn vừa up lên 
// 'img' là name của input , tương tự như code thuần
public function __construct($data){ 
$this->setname($data['name']); 
$this->settmp($data['tmp_name']); 
$this->setsize($data['size']); 
$this->settype($data['type']); 
} // Hàm này sẽ lấy cái nội dung mà $up truyền vào 
// $up=new upload($_FILES['img']) // Tức là hàm này sẽ truyền 1 file vào 
// Sau đó cái thằng __construct sẽ nhận cái file đó từ ($data) 
// Các thao tác còn lại y như bên code thuần 
// Nếu ai chưa hiểu về __Construct có thể nghiên cứu lại OOP

OK , nếu bài viết của mình chưa làm những bạn đọc hiểu , thì hãy thông cảm cho mình , các bạn có thể google thêm về vấn đề Upload file trong php 

Chúc các bạn học vui vẻ

2,876 xem 05 hữu ích trả lời –