2012-06-19 4 views
-1

Uploadify를 사용하여 이미지를 php (codeigniter)에 업로드하고 있습니다. 업로드 패키지와 함께 제공되는 샘플 PHP 파일로 테스트되었습니다. 그것은 작동합니다. 그러나 나는 onUploadError가 발생하도록 할 수 없다. 샘플 PHP 코드가 있습니다업로드 : 이미지 크기 제한

if (in_array($file_ext,$fileTypes)) { 
    $newFileName = mt_rand() . time() . '.' . $file_ext; 
    $targetFile = rtrim($targetPath,'/') . '/' . $newFileName; 
    move_uploaded_file($tempFile,$targetFile); 
    echo $newFileName; 
} else { 
    echo 'Invalid file type.'; 
} 

JS는 다음과 같이 매우 간단합니다 :

$('#file_upload').uploadify({ 
     'fileTypeDesc' : 'Image Files', 
     'fileTypeExts' : '*.gif; *.jpg; *.jpeg; *.png', 
     'swf'  : '/static/uploadify/uploadify.swf', 
     'uploader'  : '/static/uploadify/uploadify.php', 
     'onUploadError' : function(file, errorCode, errorMsg, errorString) { 
      console.log('The file ' + file.name + ' errorCode ' + errorCode + ' errorMsg ' + errorMsg + ' errorString ' + errorString); 
     }, 
     'onUploadSuccess' : function(file, data, response) { 
      console.log(data); 
     } 
    }); 

Invalid file type.가 프론트 엔드에 에코됩니다. onUploadError 대신 onUploadSuccess이 트리거됩니다. PHP에 오류가 있다는 것을 알리는 지표가 없다는 것이 이상하게 보입니다.

onUploadError을 트리거하는 유일한 방법은 에코하기 전에 200이 아닌 http 헤더를 설정하는 것입니다. 그러나 onUploadError 함수 인수 errorCode, errorMsg, errorString은 http 코드이며 에코 내용 (오류 메시지)은 손실됩니다. 그것이 내가 해결하기 위해 노력하고 실제 문제를 말할 수 있도록

업데이트는 무엇 질문 제목을 수정했습니다. 그리고 그 이후로 해결책을 찾았습니다.

+0

는 해당 질문의 진짜 주제 아니라는 것을 찾기 위해, 이미지 차원 솔루션을 찾고 여기에왔다. –

답변

0

마침내이 문제를 해결하기 위해 언젠가는 얻었습니다. 문제를 해결하기위한 단계가 있습니다. 파일이 성공적으로

초 업로드되어 있기 때문에

첫째, onUploadError의 문제가 해고되지 않고, uploadify 큐 제한 및 업로드 제한에 관계없이 백엔드에서 잘못된 이미지 차원의 탐지를 성공적으로 업로드에 따라 업데이트됩니다.

그래서 솔루션은 내 백엔드가 이미지 크기를 확인하고 사용자에게 표시되는 오류 메시지와 함께 json 데이터로 응답하는 것입니다. 또한 업로드 재설정, 정말 swfupload, 변수 successful_uploads입니다. queuelimit 또는 업로드 한도를 엉망이 아닌지 확인합니다. 샘플 코드 :

'onUploadSuccess' : function(file, data, response) { 
    var obj = eval('(' + data + ')'); 
    if (obj.success) { alert('uploaded') } 
    else { 
     var stats = this.getStats(); 
     this.setStats({successful_uploads: stats.successful_uploads - 1}); 
    } 
} 

참조 swfupload의 setStats 방법 http://demo.swfupload.org/Documentation/#setStats