![](/img/trans.png)
[英]React.js . when i am trying to upload more then 3 image files, using FileReader, only 3 uploaded
[英]JS - Only allowing one file to be uploaded when using FileReader Object
在我的项目中,我有一些 JS 代码,允许用户为他们的个人资料图片选择一个图像,然后该图像显示在浏览器中。
我只希望用户能够为他们的个人资料图片选择单个图像,并且该单个图像应该是用户选择后浏览器中显示的唯一图像。
然而目前用户可以选择他们的个人资料PIC和这些多个图片都显示在对方旁边的浏览器多个图像。
下面的代码使用FileReader
对象,当用户从输入字段中选择图像时,它允许在浏览器中显示图像。
这是我的JS代码:
// profilePic is the id of my file field
// CORRECTION HERE
var img = document.createElement("img");
img.classList.add("fixedImage");
$("#profilePic").change(function(e) {
for (var i = 0; i < e.originalEvent.srcElement.files.length; i++) {
var file = e.originalEvent.srcElement.files[i];
var reader = new FileReader();
reader.onloadend = function() {
img.src = reader.result;
}
reader.readAsDataURL(file);
$("#profilePic").after(img);
}
});
如何使用户只能选择一个文件,因为当前当用户选择一个图像时,它会显示在浏览器中,但是当从同一文件输入中选择另一张图像时,它也会显示在浏览器的旁边选择的第一个图像。 有谁知道如何解决这个问题? 谢谢。
更新代码:
这段代码不起作用,也没有任何变化。 请注意,我不相信 #profilePic 有src
属性,因为它是file
输入,而不是图像元素。
function readURL(input)
{
if(input.files && input.files[0]){
var reader = new FileReader();
reader.onload = function(e){
$("#profilePic").attr('src',e.target.result);
}
reader.readAsDataURL(input.files[0]);
}
}
$("#profilePic").change(function(e) {
readURL(this);
for (var i = 0; i < e.originalEvent.srcElement.files.length; i++) {
var file = e.originalEvent.srcElement.files[i];
var img = document.createElement("img");
img.classList.add("fixedImage");
var reader = new FileReader();
reader.onloadend = function() {
img.src = reader.result;
}
reader.readAsDataURL(file);
$("#profilePic").after(img);
}
});
更新 - HTML 代码:
<form class="completeSignupForm" enctype="multipart/form-data" method="POST" action="/">
<input type="file" name="profile_pic" id="profilePic" accept="image/*">
<br>
<input type="text" name="bio" placeholder="Add a bio:" id="bio" maxlength="140">
<br>
<label for="profilePic"><u></u>Click here to choose a profile photo</u></label>
<button type="submit" class="btn btn-primary doneBtn">Done</button>
</form>
尝试这个
HTML
<div id="preview"></div>
<img src="dummyavatar.png" id="img"/>
JS
function readURL(input)
{
if(input.files && input.files[0]){
var reader = new FileReader();
reader.onload = function(e){
$("#preview").attr('src',e.target.result);
}
reader.readAsDataURL(input.files[0]);
}
}
$("#img").change(function(){
readURL(this);
});
使用你的代码,我在这里更正了
<script>
var img = document.createElement("img");
img.classList.add("fixedImage");
$("#profilePic").change(function(e) {
var file = e.originalEvent.srcElement.files[0];
var reader = new FileReader();
reader.onloadend = function() {
img.src = reader.result;
}
reader.readAsDataURL(file);
$("#profilePic").after(img);
});
</script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.