2010-10-07 27 views
7

Chúng tôi đang tải lên tệp xử lý tùy chỉnh ở cuối máy chủ do các giới hạn được nhúng.Tải lên tệp HTML: có cách nào để buộc nội dung-type = "application/octet-stream"

Các tập tin HTML code upload sử dụng trong trình duyệt Firefox:

<html> 
<body> 
    <form action="http:///192.168.1.1/upload.cgi" name="form_1" method="post" enctype="multipart/form-data" > 
     <input type="file" id="file" name="filename" content-type="application/octet-stream"> 
     <input type="submit" name="mysubmit" value="Send"> 
    </form> 
<body> 
</html> 

Nếu tập tin đã chọn được gọi là "fish.jpg", máy chủ nhận content-type của nó là "image/jpeg". Nếu tập tin được đổi tên thành chỉ "cá" mà không có phần mở rộng tập tin, máy chủ sẽ nhận được loại nội dung của nó là "ứng dụng/octet-stream" đó là những gì chúng ta muốn.

Có cách nào để buộc "ứng dụng/octet-stream" trong một trang HTML (có hoặc không có JavaScript thông thường) không?

Cảm ơn trước, Bert

+2

Tại sao? Nếu bạn định xử lý bất kỳ dữ liệu nào như là "Một số byte có thể đại diện cho một cái gì đó nhưng chúng tôi không biết", thì tại sao không chỉ bỏ qua loại nội dung mà bạn nhận được thay vì cố gắng buộc trình duyệt yêu cầu nó Không biết nó đang gửi gì? – Quentin

Trả lời

1

Có cách nào để buộc "application/octet-stream" trong một trang HTML (có hoặc không thường xuyên JavaScript)?

Bạn không nên đặt loại nội dung bằng html như thế. Kẻ xấu có thể dễ dàng tải lên bỏ qua điều đó. Cách này là thực hiện xác thực hợp lệ phía máy chủ.

+1

Làm cách nào để bạn có thể thực hiện "xác thực hợp lệ phía máy chủ?" – rboarman

6

No. Không có thuộc tính content-type="...". Bạn không thể ảnh hưởng đến lựa chọn của trình duyệt là tiêu đề Content-Type trong một phụ bản multipart/form-data ở tất cả, có hoặc không có JavaScript.

Tại sao lại quan trọng? Đó là một ý tưởng tồi cho một kịch bản phía máy chủ làm bất cứ điều gì nhiều với Content-Type, vì nó thường xuyên không chính xác. Việc xử lý image/jpeg tải lên khác với application/octet-stream là điều không nên thực hiện, ít nhất vì trình duyệt có thể chọn tải lên JPEG là application/octet-stream hoặc một thứ khác (cụ thể là IE thường thích gửi image/pjpeg).

Nếu bạn kiểm soát phía máy chủ và nhận đúng loại tệp tải lên là rất quan trọng, cần có giao diện để người dùng chọn thủ công. (Bạn có thể sử dụng tính năng mở rộng tệp JavaScript và/hoặc Loại nội dung để đặt giá trị mặc định nhưng không dựa vào.)

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