HTML input type=file,提交表单前获取图片

IT技术 javascript html forms file-io
2021-01-30 15:01:44

我正在构建一个基本的社交网络,并且在注册时用户上传了一个显示图像。基本上,我想显示图像,就像在表单所在页面上的预览一样,就在他们选择它之后和提交表单之前。

这可能吗?

4个回答

这是在上传之前预览图像的完整示例。

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]);
  }
}
哦真的对不起..!! 感谢更正.. 我用原始 URL 替换了它。
2021-03-25 15:01:44
你误会了。问题是你为什么使用网址缩短器(goo.gl)?它隐藏/混淆网址
2021-03-27 15:01:44
它不会呈现 url,但它会使用在文本中嵌入图像直接从本地存储显示图像......试试这个代码然后 commnet
2021-03-31 15:01:44

我发现这个使用对象的更简单但功能强大的教程fileReader它只是创建一个 img 元素,并使用 fileReader 对象,将其 source 属性分配为表单输入的值

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...">

这可以使用 HTML 5 轻松完成,请参阅此链接http://www.html5rocks.com/en/tutorials/file/dndfiles/

啊,好地方。我已将该问题标记为潜在重复。
2021-03-25 15:01:44