Câu trả lời cho câu hỏi này có lẽ liên quan nhiều hơn đến việc tải lên html hơn đường ray.
Khi bạn muốn tải lên tệp, bạn thường làm một đầu vào với loại = "tệp".
Điều này có thể được thực hiện trong Rails bằng cách sử dụng file_field_tag helper. Nó sẽ tạo ra một đầu vào với type = "file" mà cũng có thể có thuộc tính chấp nhận, nhưng bạn thực sự không thể sử dụng nó bởi vì nó không thực sự có bất kỳ hiệu ứng rõ ràng nào. Thuộc tính này chấp nhận các loại MIME, không phải các phần mở rộng và hầu hết các trình duyệt thậm chí không sử dụng nó.
Điều tốt nhất bạn có thể làm là có thể có javascript kiểm tra phần mở rộng tệp trước khi tải lên (sau khi bạn chọn tệp từ hộp thoại). Đọc thêm về nó trong this question.
Vấn đề là bạn không thể buộc hệ điều hành chỉ hiển thị cho bạn các tiện ích mở rộng tệp mà bạn muốn. Bạn có thể xác nhận các phần mở rộng bằng cách sử dụng JS ví dụ, trước khi tải lên, hoặc kiểm tra các nội dung của file sau khi tải lên, phía máy chủ
Nguồn
2011-01-13 14:15:08
Sử dụng Javascript không phải là ý tưởng hay vì nó có thể dễ dàng bị phá vỡ. Tốt hơn nên thực hiện xác thực phía máy chủ, ví dụ: được hỗ trợ bởi Paperclip. –
Tôi không đề xuất sử dụng javascript để xác thực, nhưng như là một hình thức duy nhất (tôi có nghĩa là .. tại sao để cho ai đó tải lên một hình ảnh với một phần mở rộng sai). Nếu người dùng tải lên tệp, ngay cả với phần mở rộng được yêu cầu, rõ ràng là nó phải được kiểm tra phía máy chủ. nhưng đó không phải là vấn đề ở đây. câu hỏi là nếu nó có thể được xác nhận trước khi tải lên (có lẽ để tiết kiệm thời gian để tải lên một cái gì đó không hợp lệ. ít nhất đó là cách tôi nhìn thấy nó) –