Получить путь к загруженному файлу, используя при клике в IE

0

Я хочу получить загруженный путь к файлу, когда пользователь выбирает файл. Я пытался использовать при изменении, он отлично работает во всех браузерах, но не работает в Internet Explorer. Есть ли способ сделать это?

<input type="file">

$(document).on('click',':file',function(){
    alert($(this).val());

});

Скрипт http://jsfiddle.net/j9ran/

  • 0
    Какую версию JQuery вы используете? Эта ошибка устранена в jQuery 1.4.2
  • 0
    вы не можете получить путь к файлу из-за соображений безопасности, независимо от того, какой браузер вы используете. Например, если файл является изображением с именем img в оповещении, вы всегда получите c:\fakepath\img.jpg
Показать ещё 5 комментариев
Теги:
internet-explorer
onclick

1 ответ

0
Лучший ответ

вы можете использовать substring javascript и lastIndexOf для извлечения имени файла из полного пути c:\fakepath\xyz.jpg следующим образом:

HTML

<form>
  <input id ="input" type="file" />
  <input  id="smt" type="submit" />
</form>

скрипт

$('#smt').click(function(e)
{
 e.preventDefault();

 var filename=$('#input').val().substring($('#input').val().lastIndexOf('\\') + 1)

 alert(filename)

});

Нажмите здесь для DEMO

Редактировать в соответствии с требованием в комментарии, чтобы получить имя файла, когда пользователь выбирает любой файл

HTML

<input id="input" type="file" />
<p></p>

скрипт

var filename;

var t;

$('#input').click(function (e) {

    $('#input').val(""); //to clear previous file name ,if any

    clearInterval(t); //if any previous interval is running 

    t = setInterval(function () {

        if ($('#input').val().length > 0) {

            filename = $('#input').val().substring($('#input').val().lastIndexOf('\\') + 1);

            clearInterval(t);

            $('p').text("");

            $('p').text("you have chosen " + filename);
        }

        else if ($('#input').val().length == 0) {

            $('p').text("");

            $('p').text("haven't chosen any file");
        }

    }, 500)


})

DEMO

  • 0
    Я хотел что-то вроде изменения, так как я хочу проверить имя .tnx для демо
  • 0
    @ Ace, ты можешь объяснить более подробно, что я имею в виду, что on change ?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню