Я соглашаюсь с Chris, проверяя, что расширение не является проверкой типа файла никаким путем, Вы смотрите на него. radUpload Telerik является, вероятно, Вашим наилучшим вариантом, он обеспечивает свойство ContentType загружаемого файла, который можно сравнить с известными типами пантомимы. Необходимо проверить на:
application/vnd.ms-excel,
приложение/Excel,
application/x-msexcel
и для нового 2k7 формат:
application/vnd.openxmlformatsofficedocument.spreadsheetml.sheet
Telerik раньше продавал radUpload в качестве отдельного компонента, но теперь его обернутый в комплект средств управления, который делает его немного более дорогим, но безусловно это - самый легкий способ проверить на истинный тип
Я мало что знаю о Ruby (или Rails), но полагаю, что проблема вызвана отсутствием контроля над кодировками символов.
Во-первых, вы должны решить, какая кодировка вы храните в своей базе данных. Затем вам нужно обязательно преобразовать весь текст в эту кодировку перед сохранением в базе данных. Для этого вам сначала нужно знать, с какой кодировки она должна начинаться.
Часто повторяемый совет - декодировать весь ввод из любой используемой кодировки в Unicode (если ваш язык поддерживает это) как можно скорее. по возможности после того, как вы получите контроль над ним. Тогда вы знаете, что весь текст, который вы обрабатываете в своей программе, является Unicode. С другой стороны, закодируйте текст в любой выходной кодировке, которую вы хотите, в качестве последнего шага перед его выводом.