0

xhr.upload.addEventListener ("error", failed, false)는 $success = move_uploaded_file($tmp_name, $name); if $(success) { echo "0" } else { echo "1" }과 어떻게 다른가요? 이것은 불필요한 여분입니까? 귀하의 요청이 통과하지 않는 경우Javascript로 오류를 감지하면 오류 이벤트 리스너와 PHP가 responseText에서 1을 반환합니다.

function uploadPHP() { 
    var xhr = new XMLHttpRequest(); 

    xhr.upload.addEventListener("progress", updateProgress, false); 
    xhr.upload.addEventListener("load", complete, false); 
    xhr.upload.addEventListener("error", failed, false); 
    xhr.upload.addEventListener("abort", cancelled, false); 

    var foo = document.getElementById("uploadScreen"); 
    var form = document.getElementById("uploadForm"); 
    var percentComplete; 
    var index; 

    xhr.onreadystatechange = function() { 
     if (xhr.readyState == 1){ 
     } 
-- 

    function cancelled() { 
     //cancel 
    } 
} 

로컬 호스트 file_server # 고양이 PHP/upload.php로

<?php 
// 
//require_once('PhpConsole.php'); 
//PhpConsole::start(); 
$tmp_name = $_FILES['file1']['tmp_name']; 
$path = "/trunk"; 
$name = $path . DIRECTORY_SEPARATOR . $_FILES['file1']['name']; 
$success = move_uploaded_file($tmp_name, $name); 
if ($success) { 
echo "0"; 
} else { 
    echo "1"; 
} 
?> 

답변

2

"error"는 경우 시간이 초과 예를 들어, 발생합니다.

일부 데이터의 유효성을 검사해야한다고 가정합니다. 유효하지 않은 경우 PHP에서 캐치되지 않는 예외를 throw하지 않는 한 "error" 이벤트가 발생하지 않습니다. 대신 값이 유효하지 않음을 나타내는 일부 데이터 (예 : "0" 문자열)를 반환합니다.

주어진 예에서는 move_uploaded_file이 완전히 실패 할 수 있지만 기술적으로 요청이 부적절한 사고없이 완료되었으므로 오류 처리기가 트리거되지 않습니다. 실패했다고 생각한 행동에 대한 유일한 표시는 "0"입니다.