2010-02-04 46 views
8

Có ai biết giải pháp tốt để hạn chế kích thước tải lên tệp khi chạy ứng dụng Rails với Hành khách/mod_rails hay không. Yêu cầu sẽ bị từ chối ngay lập tức để tệp không được chuyển sang máy chủ.Giới hạn kích thước tải lên tệp Rails

Các giải pháp mà tôi đã tìm thấy cho đến nay tất cả đều mô tả cách vá Mongrel để thực hiện giới hạn, nhưng tôi phải sử dụng hành khách với ứng dụng này.

Trả lời

9

Bạn có thể nắp kích thước tải lên thông qua Apache bằng cách sử dụng chỉ thị LimitRequestBody:

<Directory "/var/www"> 
    LimitRequestBody 1024 
</Directory> 

http://httpd.apache.org/docs/1.3/mod/core.html#limitrequestbody

+0

đây là một giải pháp khả thi. vấn đề ở đây là apache chỉ bỏ kết nối và do đó nó không thể hiển thị một trang lỗi – Mato

+0

Vâng, đây là xác thực phía máy chủ và được sử dụng cho mục đích bảo mật. Có thể bạn nên sử dụng tập lệnh ở phía máy khách để người dùng không độc hại sẽ được thông báo ngay tại chỗ. Nếu bạn đang sử dụng một plugin như 'dropzone', nó dễ dàng như việc thiết lập' maxFilesize' – zehelvion

8

Bạn có thể sử dụng javascript sau đây để thông báo cho người dùng rằng tệp đã chọn vượt quá giới hạn tối đa. Nhưng vẫn cần thiết phải có xác thực phía máy chủ.

$('#id_of_input_file_field').change(function() { 
    if(this.files[0].size > MAX_LIMIT_FOR_FILE){ 
    $('#id_of_input_file_field').val(''); 
    alert('File exceeds maximum size limit ') 
} 
}); 

MAX_LIMIT_FOR_FILE là trong byte, vì thế nếu bạn muốn thiết lập giới hạn tối đa của 1Mb sau đó giá trị của MAX_LIMIT_FOR_FILE nên 1048576

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