Показать выбранный файл без обратной передачи - PullRequest
2 голосов
/ 08 января 2010

У меня есть <input type="file">, где пользователь выбирает файл изображения. Можно ли показать это изображение на странице, не загружая его на сервер? По сути, я хочу использовать локальный файл с компьютера пользователя.

PS - я использую JQuery.

Ответы [ 5 ]

5 голосов
/ 08 января 2010

Это невозможно, даже ссылка на файл с использованием file:// не будет работать, поскольку, когда вы получаете значение из поля ввода файла, вы получаете только имя файла, а не путь. Поэтому невозможно узнать, где находится изображение. Чтобы это работало, вам нужно использовать загрузчик на основе Flash.

Это, безусловно, мера безопасности, поскольку Internet Explorer даёт путь к вам, единственное, что он всегда c:\fakepath\filename.png. Я предполагаю, что браузеры делают свою работу, препятствуя JavaScript получать любую значимую информацию из файловой системы.

Возвращаемые значения для разных браузеров при попытке загрузить файл C:\test.txt:

  • Firefox 3.5.6
    test.txt

  • Chrome 3.0.195.38
    test.txt

  • Опера 10.00
    C:\fake_path\test.txt

  • Internet Explorer 8
    C:\fakepath\test.txt

3 голосов
/ 08 января 2010

Нет, это невозможно. Javascript не имеет доступа к локальной файловой системе.

То, о чем вы просите, - это огромный риск безопасности, замаскированный под «запрос функции». Если бы это было возможно, тогда javascript мог бы также открывать другие виды файлов с локального компьютера. Например, документы MS Word - вы знаете файлы, которые могут запускать сценарии.

1 голос
/ 08 января 2010

Это не всегда возможно в Javascript. Это возможно с помощью загрузчиков на основе Flash, таких как этот .

0 голосов
/ 01 октября 2010

Это возможно в Internet Explorer, однако ваш пользователь должен добавить ваш сайт в «Надежные сайты», или C: \ fakepath \ - это все, что вы увидите. После добавления на доверенные сайты вы получаете доступ к реальному пути.

Не надейтесь найти кросс-браузерное решение для этого!

0 голосов
/ 08 января 2010

:-), я думаю, что это довольно просто.

document.getElementByid('img1').src = document.getElementById('fileUpload').value;

, но это возможно не во всех браузерах

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...