我想在硬盘驱动器中选择之后显示图像,然后再将其发送到服务器(上传)。我在this网站上找到了一个小代码,我复制粘贴它但它不起作用(它在演示页面上)。我可以选择一个图像,它的名称显示在“选择文件”按钮的右侧,但不显示图像和大小。我拉着我的头发。
整个代码:
<!DOCTYPE html> <!-- Using margin:auto will not work in IE8, unless a !DOCTYPE is declared. -->
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://ogp.me/ns/fb#">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="design3.css" rel="stylesheet" type="text/css"/>
<script src="jquery-1.8.3.min.js"></script>
<script language="JavaScript">
// Handle file while select a new file
$('#file').change(function () {
$('#img_size').val((this.files[0].size) / 1000000);
handleFiles(this.files);
});
// handle files
function handleFiles(files) {
for (var i = 0; i < files.length; i++) {
var file = files[i];
var imageType = /image.*/;
if (!file.type.match(imageType)) {
continue;
}
var img = document.getElementById('fake_img');
/* img.src = file;
img.onload = function () {
}; */
var reader = new FileReader();
reader.onload = (function (aImg) {
return function (e) {
aImg.src = e.target.result;
};
})(img);
reader.readAsDataURL(file);
}
}
function drawAd()
{
window.open('http://www.google.com');
}
</script>
</head>
<body>
<input type="file" id="file"/>
<input type="text" id="img_size" />
<img src="" id="fake_img" />
<button type="button" onclick="drawAd()">Refresh</button>
</body>
</html>
在IE和Chrome中测试过。
答案 0 :(得分:0)
如果没有看到代码的其余部分(表单的HTML),很难确定,但可能正在发生的事情是您的代码在浏览器看到并解析您的HTML之前正在运行
将您的代码包装为jQuery“ready”处理程序:
$(function() {
// your code here
});
看看是否有帮助。这一行:
$('#file').change(function () {
为文件输入上的“change”事件设置事件处理程序。当它运行时,如果没有浏览器知道的“file”作为其“id”的元素,那么你将不会得到任何错误,但什么都不会发生。通过延迟该代码直到浏览器看到你的整个文档(这是jQuery“就绪”包装器所做的那样),你就可以找到“文件”输入。