2013-03-01 3 views
2

Так что мне нужно создать элемент управления загрузкой файлов, который передает файлы в очень специфическом виде. Большинство пользователей находятся на IE8, поэтому я использую скрытый iframe и сообщение формы, но когда пользователь выбирает файл с помощью ввода файла, моя функция запускается. Я не знаю, как получить только имя файла в IE8, так как файл api не поддерживается. В приведенном ниже примере предупреждение выводит полный адрес, но это мне не полезно. Есть идеи?Как получить имя файла для ввода типа файла в IE8

<form> 
    <input name="data" id="filesInput" onchange="handleFileSelect(this);" type="file" value=""/> 
</form> 

function loadFile(evt){ 
    alert(evt.value); 
} 
+0

Можете ли вы не просто пройти по адресу, чтобы получить только ту часть, которую вы хотите? – DiMono

+0

Вы не можете этого сделать. IE8 не поддерживает никаких манипуляций с файлами на клиентах, вам нужно сделать это на сервере, или если там есть какие-либо решения activeX. – adeneo

ответ

1

ли evt.value не содержит полное имя файла, но имеющий фальшивый путь, что-то вроде

C:\fakepath\video.mp4 

Итак, вы можете использовать:

var n = evt.target.value.substring(evt.target.value.lastIndexOf('\\') + 1); 

Теперь п будет содержать просто имя файла.

+0

n дает имя файла во всех браузерах, но IE8 предоставляет проблему как «Невозможно получить значение свойства« неопределенной или нулевой ссылки ». Как получить значение ввода типа = 'файл' в IE8? –

+0

Откажитесь от IE8; p - или вам придется возиться с тем, как evt.target является ссылкой - возможно, что-то еще; используйте инструменты браузера dev для проверки evt и его цепочки свойств. – edoceo

+0

Этот вопрос задает вопрос об IE8. Это решение не работает для IE8. – meltuhamy

Смежные вопросы