Ở bài trước chúng ta đã tìm hiểu được khá nhiều hàm xử lý file nhưng tôi không đề cập đến hàm upload file bởi vì tôi muốn nó là một bài thực hành riêng dành cho các bạn. Và trong bài này mình sẽ hướng dẫn các bạn cách upload file bằng PHP bằng cách đơn giản và dễ hiểu nhất.

Nội dung chính

  • 1. Upload lên Server bằng code PHP
  • 2. Lời kết

1. Upload lên Server bằng code PHP

Để upload file lên Server thì ban phải sử dụng form có thuộc tính enctype="multipart/form-data" và phương thức POST, thẻ input sẽ có type="file".

Khi bạn upload một file lên thì trên Server sẽ nhận được 5 thông số cho một file, và PHP sẽ dựa vào các thông số đó để tiến hành upload, các thông số đó là:

  • name: Tên của file bạn upload
  • type: Kiểu file mà bạn upload (hình ảnh, word, …)
  • tmp_name: Đường dẫn đến file upload ở client
  • error: Trạng thái của file bạn upload, 0 => không có lỗi
  • size: Kích thước của file bạn upload

Bây giờ ta sẽ làm một ví dụ upload file để bạn dễ hiểu hơn nhé.

Bước 1: Bạn tạo file upload.php trong thư mục WWW của Vertrigo Server, sau đó copy nội dung này vào

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <form method="post" action="" enctype="multipart/form-data">
            <input type="file" name="avatar"/>
            <input type="submit" name="uploadclick" value="Upload"/>
        </form>
        <?php
            // Xử Lý Upload
            var_dump($_FILES);
        ?>
    </body>
</html>

 

Bạn lưu ý rằng để upload file được thì form phải có thuộc tính enctype=”multipart/form-data” như trong code trên nhé.

Cũng giống như POST và GET, tất cả các file bạn upload lên sẽ được lưu trữ trong một biến cục bộ tên là $_FILES, nên trong đoạn code trên mình có var_dump($_FILES) để xem thông tin file mình upload lên. Bây giờ bạn chạy file này lên, chọn upload một file bất kỳ và nhấn vào button Upload, bạn sẽ thấy 5 thông tin mà tôi đề cập ở trên.

Bước 2: Bạn tạo một folder upload cùng cấp với file upload.php, sau đó sửa lại file upload.phpnhư 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
31
32
33
34
35
36
37
38
<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
<body>
    <form method="post" action="" enctype="multipart/form-data">
        <input type="file" name="avatar"/>
        <input type="submit" name="uploadclick" value="Upload"/>
    </form>
    <?php // Xử Lý Upload
 
    // Nếu người dùng click Upload
    if (isset($_POST['uploadclick']))
    {
        // Nếu người dùng có chọn file để upload
        if (isset($_FILES['avatar']))
        {
            // Nếu file upload không bị lỗi,
            // Tức là thuộc tính error > 0
            if ($_FILES['avatar']['error'] > 0)
            {
                echo 'File Upload Bị Lỗi';
            }
            else{
                // Upload file
                move_uploaded_file($_FILES['avatar']['tmp_name'], './folder/'.$_FILES['avatar']['name']);
                echo 'File Uploaded';
            }
        }
        else{
            echo 'Bạn chưa chọn file upload';
        }
    }
?>
</body>
</html>

 

Phần comment bên trong code tôi đã giải thích rõ cho các bạn rồi. Riêng hàm move_uploaded_file($client_path, $server_path) sẽ có 2 tham số truyền vào, tham số $client_path là đường dẫn đến file ở client, tham số $server_path là đường dẫn các bạn muốn lưu trên Server (đường dẫn có kèm theo tên file). Nếu bạn muốn kiểm tra định dạng file trước khi upload thì có thể sử dụng thông số type để kiểm tra.

2. Lời kết

Trong bài này tôi chỉ hướng dẫn các bạn upload file với php đơn giản và không có kiểm tra định dang file trước khi upload lên Server, vì vậy nếu bạn muốn kiểm tra định dạng file trước khi upload thì hãy sử dụng các thông số mà mình đề cập ở trên nhé. Bài này rất đơn giản nhưng tôi nghĩ các bạn cũng nên làm theo cho nhuần nhuyễn trước khi đi vào các bài sau. Bài tiếp theo chúng ta tìm hiểu các hàm kiểm tra dữ liệu trong php

278 BÌNH LUẬN

  1. My brother recommended I might like this website. He was totally right. This post actually made my day. You can not imagine just how much time I had spent for this information! Thanks!

  2. Wow! This could be one particular of the most beneficial blogs We ave ever arrive across on this subject. Basically Wonderful. I am also a specialist in this topic so I can understand your effort.

  3. This unique blog is definitely educating as well as diverting. I have chosen many interesting stuff out of this blog. I ad love to visit it every once in a while. Cheers!

  4. Normally I don at read post on blogs, however I would like to say that this write-up very forced me to check out and do it! Your writing taste has been amazed me. Thank you, very nice post.

  5. What as Happening i am new to this, I stumbled upon this I have found It absolutely helpful and it has aided me out loads. I hope to contribute & aid other users like its helped me. Great job.

  6. Wow! This could be one particular of the most useful blogs We ave ever arrive across on this subject. Basically Excellent. I am also an expert in this topic so I can understand your effort.

  7. I think other site proprietors should take this site as an model, very clean and wonderful user friendly style and design, as well as the content. You are an expert in this topic!

  8. Very nice post. I just stumbled upon your blog and wished to say that I have really enjoyed browsing your blog posts. In any case I will be subscribing to your feed and I hope you write again soon!

  9. You completed approximately first degree points there. I searched by the internet for the problem and found most individuals will chance collected with down with your website.

  10. Si la causa son los factores psicológicos, puede ser útil un tratamiento psiquiátrico o psicológico. En todo caso, existen medicamentos que pueden ayudar a conseguir una erección, como son los que contienen sildenafilo y tadalafilo, ambos en nuestro vademécum. No tome esta medicina en cantidades mayores o menores, o por más tiempo de lo recomendado.

  11. Wonderful blog! I found it while browsing on Yahoo News. Do you have any tips on how to get listed in Yahoo News? I ave been trying for a while but I never seem to get there! Many thanks

  12. Your style is so unique in comparison to other folks I ave read stuff from. I appreciate you for posting when you ave got the opportunity, Guess I will just book mark this web site.

  13. Wow that was strange. I just wrote an very long comment but after I clicked submit my comment didn at appear. Grrrr well I am not writing all that over again. Anyways, just wanted to say superb blog!

  14. My brother recommended I might like this web site. He was entirely right. This post truly made my day. You can not imagine simply how much time I had spent for this information! Thanks!

  15. You are able to find visibly a pack to understand about this unique. I truly suppose you created specific excellent components in functions also.

  16. Wow! This could be one particular of the most helpful blogs We ave ever arrive across on this subject. Actually Fantastic. I am also a specialist in this topic so I can understand your effort.

  17. You can certainly see your expertise in the work you write. The world hopes for more passionate writers such as you who aren at afraid to mention how they believe. All the time follow your heart.

  18. Usually I don at read article on blogs, but I would like to say that this write-up very compelled me to try and do so! Your writing style has been surprised me. Thanks, very nice article.

  19. This can be a really very good study for me, Should admit which you are a single of the best bloggers I ever saw.Thanks for posting this informative write-up.

  20. Im no professional, but I imagine you just made an excellent point. You definitely comprehend what youre talking about, and I can truly get behind that. Thanks for being so upfront and so genuine.

  21. You could definitely see your skills in the paintings you write. The world hopes for more passionate writers such as you who aren at afraid to mention how they believe. All the time follow your heart.

  22. This is really interesting, You are a very skilled blogger. I ave joined your rss feed and look forward to seeking more of your fantastic post. Also, I ave shared your website in my social networks!

  23. safe power leveling and gold I feel pretty lucky to have used your entire website page and look forward to many more excellent times reading here

  24. My brother recommended I might like this website. He was entirely right. This post truly made my day. You cann at imagine just how much time I had spent for this information! Thanks!

  25. This is really interesting, You are a very skilled blogger. I have joined your feed and look forward to seeking more of your fantastic post. Also, I ave shared your website in my social networks!

  26. It as nearly impossible to find well-informed people in this particular subject, however, you sound like you know what you are talking about! Thanks

  27. This blog is obviously cool as well as diverting. I have discovered helluva useful things out of this source. I ad love to visit it again soon. Cheers!

THOÁT KHỎI BÌNH LUẬN

Please enter your comment!
Please enter your name here