HTML input type = file, получите изображение перед отправкой формы - PullRequest
39 голосов
/ 27 апреля 2011

Я строю базовую социальную сеть и при регистрации пользователь загружает изображение дисплея.По сути, я хотел отобразить изображение, например, предварительный просмотр на той же странице, что и форма, сразу после того, как они выбрали его и перед отправкой формы.

Возможно ли это?

Ответы [ 7 ]

54 голосов
/ 27 декабря 2012

Вот полный пример предварительного просмотра изображения до его загрузки.

HTML:

<html>
<head>
<link class="jsbin" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" />
<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.0/jquery-ui.min.js"></script>
<meta charset=utf-8 />
<title>JS Bin</title>
<!--[if IE]>
<script src="http://goo.gl/r57ze"></script>
<![endif]-->
</head>
<body>
<input type='file' onchange="readURL(this);" />
<img id="blah" src="#" alt="your image" />
</body>
</html>

JavaScript:

function readURL(input) {
  if (input.files && input.files[0]) {
    var reader = new FileReader();
    reader.onload = function (e) {
      $('#blah')
        .attr('src', e.target.result)
        .width(150)
        .height(200);
    };
    reader.readAsDataURL(input.files[0]);
  }
}
22 голосов
/ 17 января 2016

Я нашел Это более простое, но мощное учебное пособие , в котором используется fileReader Объект. Он просто создает элемент img и, используя объект fileReader, назначает его атрибут источника в качестве значения ввода формы

function previewFile() {
  var preview = document.querySelector('img');
  var file    = document.querySelector('input[type=file]').files[0];
  var reader  = new FileReader();

  reader.onloadend = function () {
    preview.src = reader.result;
  }

  if (file) {
    reader.readAsDataURL(file);
  } else {
    preview.src = "";
  }
}
<input type="file" onchange="previewFile()"><br>
<img src="" height="200" alt="Image preview...">
16 голосов
/ 10 ноября 2011

это очень легко сделать с помощью HTML 5, см. Ссылку http://www.html5rocks.com/en/tutorials/file/dndfiles/

7 голосов
/ 07 декабря 2017

function previewFile() {
  var preview = document.querySelector('img');
  var file    = document.querySelector('input[type=file]').files[0];
  var reader  = new FileReader();

  reader.onloadend = function () {
    preview.src = reader.result;
  }

  if (file) {
    reader.readAsDataURL(file);
  } else {
    preview.src = "";
  }
}
<input type="file" onchange="previewFile()"><br>
<img src="" height="200" alt="Image preview...">
6 голосов
/ 04 апреля 2012

хороший загрузчик файлов с открытым исходным кодом

http://blueimp.github.com/jQuery-File-Upload/

5 голосов
/ 27 апреля 2011
3 голосов
/ 27 апреля 2011

Изображение не может быть показано до тех пор, пока оно не будет отправлено с любого сервера. поэтому вам нужно загрузить изображение на ваш сервер, чтобы показать его предварительный просмотр.

...