오늘 드래그 앤 드롭과 파일 API를 사용하는 썸네일을 작성하려고 시도해 왔습니다.HTML5 File API는 항상 [object file]의 DataURI를 반환합니다. 내가 도대체 뭘 잘못하고있는 겁니까?
마치 내가 합리적으로 멀리있는 것처럼 느껴집니다. 그러나 내 이미지 파일의 원본으로 제공되는 DataURI는 항상 [개체 파일]로 반환되므로 이미지가 표시되지 않습니다.
어떤 도움이 필요합니까?!
감사합니다. 대니
는
<!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>
[첫 세계 문제 (http://www.reddit.com/r/firstworldproblems/) : 나는'에 StackOverflow에 대한 질문에 대답하는 추한 긴 XHTML의적인 doctypes로 부담해야한다 :)'할 수만 있다면''please ... –
나는 보통 이렇게한다. 이것은 바보 같이 DW에서 시작하여 머리를 바꾸지 않은 5 분짜리 프로젝트 중 하나 일 뿐이다. 조금 더 편해졌습니다.) – DanTonyBrown