Bir HTML formunda enctype='multipart/form-data'
ne anlama gelir ve ne zaman kullanmalıyız?
Bir POST isteği yaptığınızda isteği oluşturan verileri bir şekilde kodlamanız gerekir.
HTML formları üç kodlama yöntemi sağlar.
application/x-www-form-urlencoded
(varsayılan)multipart/form-data
text/plain
Bir de application/json
için çalışmalar yapılıyordu ancak bundan vazgeçildi.
(HTML form gönderimi dışındaki araçlar kullanılarak oluşturulan HTTP istekleriyle başka kodlamalar da mümkündür. JSON, web hizmetleriyle kullanım için yaygın bir biçim ve SOAP da hala kullanır.)
Önemli noktalar şunlar:
- Asla
text/plain
kullanmayın.
İstemci taraflı kod yazarken:
- formunuz herhangi bir
<input type="file">
öğesi içerdiğindemultipart/form-data
kullanın. - diğer durumlarda
multipart/form-data
veyaapplication/x-www-form-urlencoded
kullanılabilir, ancakapplication/x-www-form-urlencoded
daha verimli olacaktır.
Sunucu tarafı kodu yazarken:
- Önceden yazılmış bir form işleme kütüphanesi kullanın
Çoğu kütüphane (örneğin Perl’de CGI->param
veya PHP’de $_POST
) sizin için bu farklılıkları halledecektir. Sunucu tarafından alınan ham veriyi kullanmaya çalışmayın.
Bazen her iki formatı da işleyemeyen bir kütüphane ile de karşılaşırsınız. Node.js’nin form verilerini işlemeye yönelik en popüler kütüphanesi, çok parçalı istekleri işleyemeyen gövde-ayrıştırıcıdır/body-parser (ancak yine de bunu yapabilecek bazı alternatifler öneren dökümantasyona sahiptir).
Ham verileri ayrıştırmak veya oluşturmak için bir kütüphane yazıyorsanız (veya hata ayıklıyorsanız), biçim hakkında endişelenmeye başlamanız gerekir. Bununla ilgiliyseniz aşağıdakileri bilmeniz faydalı olacaktır:
application/x-www-form-urlencoded
URL’nin sonundaki bir sorgu dizesiyle aşağı yukarı aynıdır.
multipart/form-data
önemli ölçüde daha karmaşıktır ancak tüm dosyaların verilere dahil edilmesini de sağlar.
text/plain
HTML 5 ile geldi ve yalnızca hata ayıklama için yararlıdır – spesifikasyondan: Bilgisayar tarafından güvenilir bir şekilde yorumlanamazlar .