2015-09-01 15 views
5

Tôi nhận thấy có ít nhất hai cách tải tệp lên máy chủ HTTP qua API.API tải tệp lên: Multipart/form-data so với nội dung thô trong nội dung?

Bạn có thể sử dụng multipart/form-data (trình duyệt tự động tải tệp HTML), nhưng bạn cũng có thể POST nội dung tệp bên trong phần yêu cầu (có thể với tiêu đề yêu cầu Kiểu nội dung).

Ưu và nhược điểm của mỗi phương pháp (trong tất cả các tính tổng quát, không phải từ trình duyệt) là gì? Ví dụ:

Yêu cầu nhiều phần - tùy thuộc vào http hoặc thư viện mạng bạn sử dụng trong môi trường lập trình của mình (tôi sử dụng Node.js ở phía máy chủ và Swift ở phía máy khách) - có vẻ phức tạp hơn một chút sau đó phân tích cú pháp.

+0

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

+0

@vtortola không thực sự là câu trả lời cho câu hỏi này . Tôi không hỏi về bất kỳ triển khai mạng phía máy khách nào, chỉ là về các phương thức http. –

Trả lời

8

Sự khác biệt duy nhất ở cấp giao thức là yêu cầu multipart/form-data phải tuân theo RFC 2388 trong khi cơ thể yêu cầu được nhập tùy chỉnh có thể tùy ý.

Ý nghĩa thực tế từ yêu cầu này là yêu cầu multipart/form-data thường lớn hơn: Trong khi khách hàng về mặt kỹ thuật được phép sử dụng không phải là 7bit content-transfer-encoding, base64 được sử dụng nhiều nhất. Các tiêu đề MIME tạo ra chi phí bổ sung có thể trở thành nút cổ chai nếu nhiều tệp nhỏ được tải lên. Lưu ý rằng hỗ trợ cho việc tải lên tệp multipart/form-data trong các máy khách/thư viện hiện có phổ biến hơn rất nhiều. Bạn nên luôn luôn cung cấp nó như là một dự phòng nếu bạn không đủ chắc chắn về các tính năng của khách hàng của bạn và máy chủ trung gian (máy chủ proxy). Đặc biệt, hãy nhớ rằng nếu bạn đang thiết kế một API cho các bên thứ ba thì các nhà phát triển khác đã quen thuộc với multipart/form-data và có sẵn thư viện để làm việc với điều đó.

Các vấn đề liên quan