Вот как мы это делаем. В основном, есть поле файла и строковое поле. JavaScript извлекает имя файла из браузера перед отправкой формы. Очевидно, вам нужно убедиться, что имя файла на другом конце действительно присутствует (например, оно будет пустым, если у пользователя отключен JavaScript), и вам нужно будет проанализировать строку для обработки различий платформы (/users/bob/file.jpg
против C:\Documents and Settings\bob\file.jpg
)
<script>
function WriteClientFileName(){
$('ClientFileName').value = $('ClientFile').value;
}
</script>
<form enctype="multipart/form-data" onsubmit="WriteClientFileName();">
<input type="File" name="ClientFile" id="ClientFile">
<input type="hidden" name="ClientFileName" id="ClientFileName" value="">
<input type="submit">
</form>
Кстати, эта техника мультиязычна. Он будет одинаково хорошо работать в RoR, PHP, JSP и т. Д.
Редактировать: Если пользователь "владеет жестоким FireBug", в чем проблема? Даже если у них нет Firebug, они могут переименовать файл на своем конце и изменить ввод. Плюс, вы проверяете свои данные, верно?