x-www-form-urlencoded veya çok parçalı/form-data application/?
Veri göndermek için iki yol vardır HTTP: application/x-www-form-urlencoded
multipart/form-data
. Çoğu tarayıcı sadece multipart/form-data
kullanılan dosyaları yüklemek mümkün olduğunu anlıyorum. API bağlamda kodlama türleri (tarayıcı dahil) kullanmak için herhangi bir ek bilgi var mı? Bu, örneğin bağlı olabilir:
- veri boyutu
- varlığı olmayan ASCII karakterler
- (unencoded) ikili veri üzerinde varlığı
- ek veri transfer ihtiyacı (filename)
Ben temel olarak web üzerinde resmi rehberlik farklı kullanımı içerik türleri ile ilgili bugüne kadar bulunamadı.
CEVAP
Söz MIME türleri için HTTP Content-Type
iki başlıkları user-agent (tarayıcı) desteklemelidir POST istekleri. İstekleri bu tür iki amacı sunucu için ad/değer çiftleri listesini göndermek için. Aktarılan veri miktarı ve türü bağlı olarak, yöntemlerden biri diğerinden daha fazla etkili olacaktır. Nedenini anlamak için, her örtünün altında ne yaptığına bakmak gerekir.
application/x-www-form-urlencoded
vücudun HTTP mesaj gönderdi server aslında dev bir sorgu dizesi -- ad/değer çiftleri ayrılmış işareti (&
) ve isimleri ayrı değerleri ile eşittir işareti (=
). Bu bir örnek olacaktır:
MyVariableOne=ValueOne&MyVariableTwo=ValueTwo
specification göre:
[Özel] alfasayısal olmayan karakter`%', yüzde işareti ve iki onaltılık basamak karakterin ASCII kodunu gösteren SS ile değiştirilir
Bu değerlerimizi biri var alfasayısal olmayan her bayt için, üç bayt olarak temsil etmek için almaya gidiyor demektir. Büyük ikili dosyaları için, yükü üç katına son derece verimsiz olacak.
O multipart/form-data
burada devreye giriyor. Verici ad/değer çiftleri bu yöntem ile, her çift "" MIME iletisi diğer cevaplar açıklandığı gibi). bir parçası olarak gösterilir Parçalar belirli bir dize sınırı (bu sınır dize "değer" yükleri). herhangi oluşmaz özellikle seçilmiş bu yüzden ayrılır Her bölümü ** 9, ve özellikle onun "adı." her bir parça verebilir Content-Disposition
, MIME üstbilgi kendi belirledi Her ad/değer çiftinin değer parça MIME iletisinin her bölümü yük. MIME spec bant genişliği kaydetmek için ikili veri (örneğin base 64 veya ham ikili bile) daha verimli bir kodlama seçebilirsiniz -- yük değeri temsil ederken bize daha fazla seçenek sunar.
Neden multipart/form-data
her zaman kullanabilirsiniz? Kısa alfasayısal değerleri (en web formları gibi) için, MIME tüm başlıkları ekleme yükü önemli ölçüde daha verimli ikili kodlama herhangi bir tasarruf ağır basar.
Hikayenin özü, eğer iletimi için ikili (non-alfanümerik) veriler (ya da önemli ölçüde boy yük) varsa, multipart/form-data
kullanın. Aksi takdirde, application/x-www-form-urlencoded
kullanın.
Şifre türü form-data/='parçalı�...
Nasıl Java kullanma isteği SONRASI çok...
Ruby: parçalı olarak HTTP üzerinden bi...
Nasıl bir form-data” Voleybolu ile POS...
Kullanarak Python ile form-data gönder...