Подтвердить что ты не робот

Сбрасывание обратной косой черты в строке - javascript

Мне нужно показать имя текущего выбранного файла (в элементе <input type="file">).

Все в порядке, единственная проблема в том, что я получаю такую ​​строку: "C:\fakepath \ typog_rules.pdf "(браузер автоматически помещает это как значение для элемента ввода).

Когда я пытаюсь разбить строку на '\' или '\\', она терпит неудачу из-за неэкранированных косой черты. Попытки совместить/заменить косые черты тоже не удаются. Есть ли способ обойти это? Мне нужно это, чтобы работать хотя бы в Opera и IE (потому что в других браузерах я могу использовать FileReader)

например. Я получаю "C:\fakepath\typog_rules.pdf" в качестве входных данных и хочу получить "typog_rules.pdf" в качестве вывода.

4b9b3361

Ответ 1

Из соображений безопасности невозможно получить реальный полный путь к файлу, переданный через элемент <input type="file" />.

Этот вопрос уже упоминается и ссылки на другие вопросы по этому вопросу.


Предыдущий ответ, содержащийся в качестве ссылки для будущих посетителей, которые достигают этой страницы через заголовок, теги и вопрос.
Обратная косая черта должна быть экранирована.
string = string.split("\\");

В JavaScript обратная косая черта используется для удаления специальных символов, таких как символы новой строки (\n). Если вы хотите использовать буквенную обратную косую черту, необходимо использовать двойную обратную косую черту.

Итак, если вы хотите совместить две обратные косые черты, необходимо использовать четыре обратной косой черты. Например, alert("\\\\") отобразит диалоговое окно, содержащее две обратные косые черты.

Ответ 2

Я думаю, что это ближе к ответу, который вы ищете:

<input type="file">

$file = $(file);
var filename = fileElement[0].files[0].name;

Ответ 3

Удалите символ обратной косой черты.

foo.split('\\')

Ответ 4

Добавьте идентификатор ввода к элементу и сделайте что-то вроде этого:

document.getElementById('inputId').value.split(/[\\$]/).pop()