2015-09-01 27 views
5

Bir API aracılığıyla bir HTTP sunucusuna dosya yükleme (en az) iki yol olduğunu fark ettim.Dosya yükleme API: Vücuttaki çoklu içerik/form-veri vs.

Sen (tarayıcılar dosya yükleme HTML girişler için doğal ne olduğu) multipart/form-data kullanabilirsiniz ancak şunu da yapabilirsiniz POST (belki doğru Content-Type istek başlığında ile) isteği vücudun içinde dosya içeriği.

Her yöntemin artıları ve eksileri nelerdir (bir tarayıcıdan değil, tüm genellikte)?

Mesela çoğaltma istekleri - programlama ortamınızda kullandığınız http veya ağ kitaplığına bağlı olarak (sunucu tarafında Node.js ve istemci tarafında Swift kullanıyorum) - oluşturulacak biraz daha karmaşık görünüyor ve sonra ayrıştırın.

+0

http://stackoverflow.com/questions/29659154/what-is-the-best-way-to-upload-files-in-a-modern-browser/ – vtortola

+0

@vtortola'nın bu soruya gerçekten bir yanıtı olmadığını kontrol edin . İstemci tarafı ağ uygulamalarını, sadece http yöntemlerini sormuyorum. –

cevap

8

İletişim kuralı düzeyindeki tek fark, özel bir istekte bulunan istek gövdesi isteğe bağlı olabilirken,isteklerinin RFC 2388'a bağlı olması gerektiğidir.

Buradaki pratik uygulama, bir multipart/form-data isteğinin genellikle daha büyük olmasıdır: İstemcilerde teknik olarak 7 bit olmayan bir kullanılmasına izin verilirken, base64 çoğu tarafından kullanılır. MIME başlıkları, çok sayıda küçük dosya yüklendiğinde bir darboğaz haline gelebilecek ek yük oluştururlar. Mevcut istemcilerde/kitaplıklarda multipart/form-data dosya yükleme desteğinin çok daha yaygın olduğunu unutmayın. İstemcilerinizin ve ara sunucularınızın (proxy sunucuları) özelliklerinden yeterince emin değilseniz, her zaman bir geri dönüş olarak sağlamanız gerekir. Özellikle üçüncü taraflar için bir API tasarlıyorsanız, diğer geliştiricilerin zaten multipart/form-data modeline aşina olacağını ve bununla çalışmak için kütüphaneleri olduğunu unutmayın.