Làm việc với các Forms và yêu cầu POST (tiếp tục)
Cuối cùng, có một dạng phần tử form chúng ta chưa thảo luận trước đây. Đôi khi, bạn sẽ gặp các forms cái cho
phép bạn upload các files từ máy địa phương của bạn tới một web server:
<form action=”upload.php” method=”post” enctype=”multipart/form-data”>
<input type=”file” name=”profile_picture”>
<input type=”submit” value=”Upload your profile picture”>
</form>
Chú ý phần tử file input trong đoạn code nguồn này, cũng như tham số “enctype” bây giờ có mặt trong tag <form>.
Để hiểu tham số này nghĩa là gì, chúng ta cần nói một chút về mã hóa form. Để đơn giản, các web forms trước tiên
sẽ mã hóa thông tin chứa trong form trước khi nhúng nó vào HTTP POST request body. Hiện tại, tiêu chuẩn HTML
giám sát 3 cách mã hóa này có thể được thực hiện như thế nào (cái sẽ kết thúc như các values cho “Content-Type”
request header):
+ pplication/x-www-form-urlencoded (mặc định): ở đây request body được format tương tự như cái chúng ta đã thấy
với các tham số URL, vì vậy name “urlen-coded”, đó là sử dụng ampersands (“&”) và dấu = để chia tách các trường dữ
liệu và các cặp name-value. Như trong các URLs, chứa các kí tự nên được mã hóa theo một cách cụ thể, cái requests
sẽ tự động làm cho chúng ta.
+ text/plain: giới thiệu bởi HTML5 và nhìn chung chỉ sử dụng cho các mục đích debug và vì vậy cực kì hiếm trong
tình huống đời sống thực.
+ multipart/form-data: phương pháp mã hóa này phức tạp hơn đáng kể nhưng cho phép chúng ta bao gồm các nội dung
của một file trong request body, cái là có thể trong dạng nhị phân, dữ liệu không phải text – vì vậy nhu cầu cho
một cơ chế mã hóa riêng rẽ.