Tôi có phải chỉ định loại MIME nếu tệp đã tải lên không có phần mở rộng không? Nói cách khác là có loại MIME chung mặc định?
Tôi có phải chỉ định loại MIME nếu tệp đã tải lên không có phần mở rộng không? Nói cách khác là có loại MIME chung mặc định?
Câu trả lời:
Bạn có thể sử dụng application/octet-stream
cho các loại chưa biết.
RFC 2046 nêu trong mục 4.5.1:
Kiểu con "octet-stream" được sử dụng để chỉ ra rằng một cơ thể chứa dữ liệu nhị phân tùy ý.
application/octet-stream
tệp có thể thực thi được. Và ngay cả khi một trình duyệt đang cố tình tải xuống một tệp thực thi, nó không "có thể thực thi" nó mà không cần người dùng yêu cầu; chỉ tải xuống một tệp thực thi không có nghĩa là tôi muốn nó được thực thi ngay bây giờ. Nếu thực sự có một trình duyệt có thể thực thi application/octet-stream
các tệp tự động khi tải xuống, hãy cho chúng tôi biết và cách tái tạo hành vi. Ngay bây giờ tôi không tin bạn.
Chúng ta nên sử dụng RFC-7231 (HTTP / 1.1 Semantics and Content) làm tài liệu tham khảo thay vì RFC-2046 (Loại phương tiện) vì câu hỏi rõ ràng về Loại nội dung HTTP.
Ngoài ra RFC-2046 không xác định rõ các loại chưa biết nhưng RFC-7231 thì có.
Không gửi loại MIME cho dữ liệu không xác định.
Để rõ ràng hơn: Hoàn toàn không sử dụng tiêu đề Kiểu nội dung.
Giao thức truyền siêu văn bản RFC-7231 (HTTP / 1.1): Ngữ nghĩa và nội dung
3.1.1.5. Loại nội dungNgười gửi tạo thư có chứa
nội dung tải trọng NÊN tạo trường tiêu đề Kiểu nội dung trong thư đó trừ khi
loại phương tiện dự định của đại diện kèm theo không xác định đối với
người gửi.
Phần đó rõ ràng bảo bạn bỏ nó đi nếu bạn không biết chắc chắn. Nó cũng cho biết rằng người nhận có thể cho rằng loại đó là ứng dụng / octet-stream nhưng điều đó cũng có thể là một thứ khác.
RFC-2046
4.5.1. Tiểu loại Octet-StreamHành động được đề xuất cho việc triển khai nhận thực thể
"application / octet-stream" chỉ đơn giản là đề nghị đưa dữ liệu
vào một tệp, với bất kỳ Mã hóa chuyển nội dung nào được hoàn tác hoặc có thể
sử dụng nó làm đầu vào cho người dùng chỉ định quá trình.
Và, như đã nêu ở trên:
RFC-7231
3.1.1.5. Loại nội dungNếu không có trường tiêu đề Kiểu nội dung, người nhận có thể giả sử loại phương tiện "ứng dụng / octet-stream"
([RFC2046], Mục 4.5.1) hoặc kiểm tra dữ liệu để xác định loại.
Nếu bạn định nghĩa nó là "application / octet-stream" thì bạn đang nói rằng bạn biết rằng đó là "application / octet-stream".
Nếu bạn không xác định nó thì bạn đang nói rằng bạn không biết nó là gì và để lại quyết định cho người nhận và người nhận sau đó có thể kiểm tra xem nó có đi như vịt không và ...
Tôi thích application/unknown
, nhưng kết quả chắc chắn sẽ giống nhưapplication/octet-stream
application/octet-stream
hoặc application/unknown
? Có một lý do họ đã phát minh ra image/png
.