Tôi đang cố gắng phát hiện loại tệp của thư viện tệp trên máy chủ web của chúng tôi vì chúng tôi đang triển khai mã được thiết kế để phát trực tuyến tệp đến trình duyệt một cách an toàn. Trước đây, các tập tin đã được lưu trữ và trình bày cho người dùng thông qua một href trực tiếp.Phát hiện một tập tin mimetype trong coldfusion đã được tải lên trên máy chủ
tôi đã cố gắng để làm điều này 3 cách khác nhau, tất cả trên máy tính địa phương của tôi (mà không phải là một môi trường sản xuất mô phỏng):
Thiết lập một biến là giá trị của những gì được trả về từ hàm getPageContext(). getServletContext(). getMimeType(). Điều này phát hiện một số nhưng không phải tất cả các loại mime cho các tập tin.
Tạo đối tượng từ coldfusion.util.MimeTypeUtils và hàm gọi hàm guessMimeType(). Điều này cũng phát hiện một số nhưng không phải tất cả các loại mime cho các tập tin.
Hành động cffile = "đọc" trên tệp trong thư viện. Đây là giải pháp mà sếp của tôi đề nghị, vì anh ta đã sử dụng nó trên các tệp có hành động cffile = "upload" từ một biểu mẫu (và nói nó hoạt động), nhưng khi tôi sử dụng nó, cấu trúc cffile luôn trống.
Lý tưởng nhất, tôi muốn truy xuất loại mime của mỗi tệp nằm trên máy chủ với độ chính xác 100%. Mã tôi đã viết đã phát hiện khoảng 99% các tệp trên bản sao của repo của tôi, để lại khoảng 30 mà nó không thể nhận dạng được. Bao gồm trong đây là những tập tin MS văn phòng với phần mở rộng -x mới, và các tập tin nén tgz.
Tôi tự hỏi liệu có cách nào chắc chắn để phát hiện loại mime của bất kỳ tệp nào đã tồn tại trên máy chủ hay không bằng cách sử dụng mã CF để xem mã đó và mã sẽ được sử dụng sản xuất máy chủ, nơi rất ít ứng dụng được cài đặt? Đó là sự hiểu biết của tôi rằng hàm đầu tiên tôi tham chiếu sử dụng thư viện kiểu mime của hệ điều hành, và hàm thứ hai sử dụng một danh sách định sẵn trong đối tượng java cho các kiểu mime. Tìm kiếm trên Google và SO đã không tạo ra bất cứ điều gì cho tôi biết rằng CF có thể phát hiện chính xác các loại tệp mime trên chính nó, cũng như tôi không thấy bất kỳ điều gì nói rằng điều này không thể thực hiện được.
Chỉnh sửa: Đây là môi trường CF8.
IIRC, loại mime trên tải lên cffile là loại mime được báo cáo bởi trình duyệt của khách hàng, có thể có hoặc không chính xác. Nó luôn luôn tồn tại, bởi vì trình duyệt được yêu cầu gửi * một cái gì đó * ngay cả khi nó chủ yếu là một trình giữ chỗ. –
@Ben, Đó cũng là những gì tôi nghĩ. Tìm kiếm trên Google tiết lộ kết quả phù hợp với giải thích đó. Nếu tôi có thể tìm ra câu trả lời ở đây, tôi có thể đặt cùng một chức năng để kiểm tra phần phụ trợ của các tệp tải lên để chúng tôi không phải quay lại và xóa dữ liệu sau này cho các loại mime không phù hợp hoặc không chính xác từ các tệp được tải lên từ người dùng. –