2012-12-10 5 views
0

FormData 및 XMLHttpRequest를 통해 파일을 업로드하려고합니다. 파일을 폴더에 저장할 수 없습니다. 잘못된 위치를 모른다. 마침내 나는이 메시지를 보낼 수 있기를 희망한다 : 당신의 포스트는 코드 섹션을 설명하기위한 많은 문맥을 가지고 있지 않다. 귀하의 시나리오를보다 명확하게 설명하십시오.HTML 5 업로드 파일을 저장할 수 없습니다.

$(document).ready(function(){ 
function defaults(e){ 
    e.stopPropagation(); 
    e.preventDefault(); 
} 
$(":file").live("change", function(){ 
    handleFiles(this.files); 
}); 
function handleFiles(files,e){ 
    // Traverse throught all files and check if uploaded file type is image 
    var imageType = /image.*/; 
    var file = files[0]; 
    // check file type 
    if (!file.type.match(imageType)) { 
     alert("File \""+file.name+"\" is not a valid image file, Are you trying to screw me :(:("); 
     return false; 
    } 
    // check file size 
    if (parseInt(file.size/1024) > 2050) { 
     alert("File \""+file.name+"\" is too big. I am using shared server :P"); 
     return false; 
    } 

    var info = '<div class="preview active-win"><div class="preview-image"><img ></div><div class="progress-holder"><span id="progress"></span></div><span class="percents"></span><div style="float:left;">Uploaded <span class="up-done"></span> KB of '+parseInt(file.size/1024)+' KB</div>'; 

    $(".upload-progress").show("fast",function(){ 
     $(".upload-progress").html(info); 
     uploadFile(file); 
    }); 
    } 
     function uploadFile(file){ 
     var fd = new FormData(); 
     fd.append('filez', file); 
     var xhr = new XMLHttpRequest(); 
xhr.upload.addEventListener("progress", uploadProgress, false); 
    xhr.addEventListener("load", uploadComplete, false); 
    xhr.addEventListener("error", uploadFailed, false); 
    xhr.addEventListener("abort", uploadCanceled, false); 
    xhr.open("POST", "upload.php", true); 
    xhr.send(fd); 

    function uploadProgress(event) { 
if (event.lengthComputable) { 
     $("#progress").css("width",(event.loaded/event.total) * 100 + "%"); 
     $(".percents").html(" "+((event.loaded/event.total) * 100).toFixed() + "%"); 
     $(".up-done").html((parseInt(event.loaded/1024)).toFixed(0)); 
    } else { 
     alert("Failed to compute file upload length"); 
    } 
      } 
    function uploadComplete(event) { 
$("#progress").css("width","100%"); 
    $(".percents").html("100%"); 
    $(".up-done").html((parseInt(file.size/1024)).toFixed(0)); 
    } 
    function uploadFailed(event) { 
    alert("There was an error attempting to upload the file."); 
    } 
    function uploadCanceled(event) { 
     alert("The upload has been canceled by the user or the browser dropped the connection."); 
     } 
     } 

     }); 

HTML

<form action="" method="post" enctype="multipart/form-data"> 
<input type="file" id="file" name="filez" accept="image/*"> 
<div class="upload-progress"></div> 
</form> 
+0

해결 된 나쁜 이름 : $ _FILES [ 'filetext'] –

+0

자신의 질문에 답하고 대답을 수락하십시오. – Ivan

답변

0

에 코드를 upload.js upload.php로는

<? 
$target_path = "uploads/"; 
$target_path = $target_path . basename($_FILES['filetext']['name']); 
$exten = basename($_FILES['filetext']['name']); 
$exten = substr($exten, -4); 
if($exten == ".png" || $exten == ".jpg" || $exten == ".bmp" || $exten == ".gif") 
{ 
if(move_uploaded_file($_FILES['filetext']['tmp_name'], $target_path)) 
{ 
    echo $_FILES['filetext']['name']."\n". $test; 
} 
else 
{ 
    echo 0; 
} 
} 
else 
{ 
echo 0; 
}?> 

조금 지저분하다.

당신이 jQuery를 사용하고 있기 때문에,이 문서의 끝 부분을 살펴 : https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest/FormData/Using_FormData_Objects

건배.

관련 문제