【发布时间】:2016-03-16 18:26:03
【问题描述】:
所以我使用以下代码让用户上传照片(如您所见,我不允许用户一次选择多个文件,他们必须选择一个文件,打开它,然后选择下一个文件,打开它等等)。
HTML:
<input type="file" capture="camera" accept="image/*" id="files1" name="files[]">
<output id="list"></output>
<form action="post.php">
<input type='hidden' id='imgsrc1' name='imgsrc1'>
<input type='hidden' id='filepath1' name='filepath1'>
<input type='hidden' id='imgsrc2' name='imgsrc2'>
<input type='hidden' id='filepath2' name='filepath2'>
<input type='hidden' id='imgsrc3' name='imgsrc3'>
<input type='hidden' id='filepath3' name='filepath3'>
<input type="submit" name="submit" value"Submit Listing">
</form>
JavaScript
function handleFileSelect(evt) {
var files = evt.target.files; // FileList object
// Loop through the FileList and render image files as thumbnails.
for (var i = 0, f; f = files[i]; i++) {
// Only process image files.
if (!f.type.match('image.*')) {
continue;
}
var reader = new FileReader();
// Closure to capture the file information.
reader.onload = (function(theFile) {
return function(e) {
// Render thumbnail.
var span = document.createElement('span');
imgsrc = e.target.result;
filename = theFile.name;
filepath = "images/uploads/" + theFile.name;
span.innerHTML = ['<img class="thumb" src="', imgsrc,
'" title="', filepath, '"/>'].join('');
document.getElementById('list').insertBefore(span, null);
document.getElementById('filepath1').value=filepath;
document.getElementById('imgsrc1').value=imgsrc;
};
})(f);
// Read in the image file as a data URL.
reader.readAsDataURL(f);
}
}
document.getElementById('files1').addEventListener('change', handleFileSelect, false);
用户选择第一张图片,然后 JavaScript 通过将其添加到 <output id="list"></output> 中来显示照片
下面的行(取自上面的代码)将所选图像的路径存储到输入框'filepath1'中,并将base64图像数据存储到输入框'imgsrc1'中:
JavaScript:
document.getElementById('filepath1').value=filepath;
document.getElementById('imgsrc1').value=imgsrc;
HTML:
<input type='hidden' id='imgsrc1' name='imgsrc1'>
<input type='hidden' id='filepath1' name='filepath1'>
问题是,我希望用户能够一张一张地选择 3 张图像。当用户选择第一张图片时很好,但是当他们选择第二张图片时,它将再次运行该 JavaScript 函数并覆盖/添加到隐藏输入框中存储的任何内容。
当用户选择第二张图片时,我希望将数据存储在两个不同的隐藏输入框中,例如:
<input type='hidden' id='imgsrc2' name='imgsrc2'>
<input type='hidden' id='filepath2' name='filepath2'>
我不知道该怎么做。可能有一个非常简单的方法可以通过使用柜台或其他东西来做到这一点,但现在是晚上 11 点 18 分,我明天早上 8 点让客户进来,这是我需要为他们解决的最后一点,哈哈。任何帮助将不胜感激。
【问题讨论】:
标签: javascript html image image-uploading