HTML5拖放/文件API缩略图上传器不工作
HTML5 Drag and Drop/File API Thumbnail uploader not working
今天我一直在尝试制作一个使用拖放和文件API的缩略图向上加载程序。
我觉得我已经走得相当远了。但是,在我的图像文件中作为源提供的DataURI总是以[对象文件]的形式返回,因此不显示图像。
有什么帮助吗?!
谢谢。Danny
(下面是我的代码(
<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<style>
#thumbnailPreview
{
width:149px;
height:137px;
border:3px dashed #333;
border-radius:10px;
text-align:center;
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script>
$("document").ready(function() {
if (!!FileReader)
{
$("#thumbnailPreview").append("<p>Drag image here to set as thumbnail</p>")
$("#thumbnailUploadBox").hide();
var thumbnailPreview = document.getElementById("thumbnailPreview")
// init event handlers
thumbnailPreview.addEventListener("dragenter", preventDefault, false);
thumbnailPreview.addEventListener("dragexit", preventDefault, false);
thumbnailPreview.addEventListener("dragover", preventDefault, false);
thumbnailPreview.addEventListener("drop", drop, false)
function preventDefault(evt)
{
evt.stopPropagation();
evt.preventDefault();
}
function drop(evt)
{
evt.stopPropagation();
evt.preventDefault();
var files = evt.dataTransfer.files;
var noOfFiles = files.length;
if (noOfFiles === 1)
{
handleImages(files);
}
else
{
alert("You appear to be attempting to upload more or less than 1 image. You can only have one thumbnail image. Please try again.");
}
}
function handleImages(files)
{
var file = files[0];
{
if(file.type.indexOf("image") == 0)
{
$("#thumbnailPreview").empty().append('<p>Working on it!</p><progress id="progressbar"></progress>');
var reader = new FileReader();
reader.onloadend = handleReaderLoadEnd;
reader.onprogress = handleReaderProgress;
reader.readAsDataURL(file);
}
else
{
alert("The file you dragged wasn't an image. Please drag another file before attempting to upload");
}
}
}
function handleReaderLoadEnd(e) {
$("#thumbnailPreview").empty().prepend('<img id="thumbnailPreviewImage">');
$("#thumbnailPreviewImage").attr({src: e.target.result});
}
function handleReaderProgress(evt)
{
if (evt.lengthComputable)
{
var loaded = (evt.loaded / evt.total);
$("#progressbar").attr({ value: loaded * 100 });
}
}
}
});
</script>
</head>
<body>
<form action="lighthouseMaker.php" enctype="application/x-www-form-urlencoded" method="post">
<div id="thumbnailPreview">
<p>Upload an Image 149 x 137px</p>
</div>
<div id="thumbnailUploadBox">
<input type="file" name="thumbnail">
</div>
</form>
</body>
</html>
您可以使用window.URL.createObjectURL / window.URL.revokeObjectURL
获取文件对象的uri。它比readAsDataURL
好。
var img = document.createElement('img');
img.src = (window.URL || window.webkitURL || window.mozURL).createObjectURL(files[0]);
Firefox和Google Chrome都支持这一功能。
相关文章:
- Javascript:selenium Web驱动程序isDisplayed()不工作
- jQuery UI自动完成突然停止工作
- AngularJS UI路由器不能像ng路由器那样工作
- HTML5音频加载和播放获胜'我不能在iPad上工作
- JavaScript打印功能使日历停止工作
- Javascript.getHours()工作不正常
- 为什么这在IE中的工作方式与在Firefox中不同
- 视频HTML没有'无法在Internet Explorer 11上工作
- 扩展移相器按钮类不工作
- Firebase迁移-简单的Firebase.set没有'不再工作了——旧的还是新的
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- 正在尝试使用if和else添加类,但无法正常工作
- Jquery FadeIn FadeOut 只工作一次
- Jssor动态缩略图不工作
- 缩略图滑块不工作
- 图像缩放只在点击缩略图后在灯箱中工作
- 我的缩略图标题在jquery中不工作
- HTML5拖放/文件API缩略图上传器不工作
- 基础+ Flexslider与缩略图不工作
- Javascript:鼠标移到缩略图上,在第8个表条目之后,较大的图像不工作