2016-06-14 3 views
0

저는 최근까지만해도 잘 작동하는 기본 PHP 업로드 스크립트가 있습니다. 업로드 스크립트를 변경하지 않았습니다. 테스트/문제 해결을 통해 jpeg 이미지 방향이 가로 방향 (너비보다 넓음)이고 파일 크기가 4.5MB보다 크면 업로드되는 파일의 약 7 %에서 다운로드가 잠기는 것을 발견했습니다. 이미지를 세로 방향으로 회전하고 파일 크기를 그대로 유지하거나 이미지 크기를 줄이고 가로 방향으로두면 업로드가 완료됩니다.PHP 이미지 업로드가 가로 방향으로 작동하지 않습니다.

나를 괴롭혔던 이유는 세로 방향의 큰 파일이 잘 업로드된다는 것입니다. 파일을 서버에 업로드 할 때 이미지 방향이 중요합니까?

먼저 업로드를 설정하고 PHP 스크립트를 호출하기 위해 Javascript와 AJAX를 사용하고 있습니다. 자바 스크립트/AJAX는 다음과 같습니다

function uploadFile() 
    { 
    var formdata = new FormData(); 
    var location=document.getElementsByName("file"); 
    var file = location[0].files[0]; 
    formdata.append("file", file,location[0].id+"_"+date+"."+file.type.substring(file.type.indexOf("/")+1)); 
    var ajax = new XMLHttpRequest(); 
    _("progressBar").style.visibility="visible"; 
    ajax.upload.addEventListener("progress", progressHandler, false); 
    ajax.addEventListener("load", completeHandler, false); 
    ajax.addEventListener("error", errorHandler, false); 
    ajax.addEventListener("abort", abortHandler, false); 
    ajax.open("POST", "as_built_replace_uploader.php"); 
    ajax.send(formdata); 
    } 

업로드에 대한 나의 PHP는 다음과 같습니다

@ ÁlvaroGonzález가 관찰
$filename = $_FILES["file"]["name"]; 
    $file_tmp_loc = $_FILES["file"]["tmp_name"]; // File in the PHP tmp folder 
    $file_type = $_FILES["file"]["type"]; // The type of file it is 
    $file_size = $_FILES["file"]["size"]; // File size in bytes 
    $file_error_msg = $_FILES["file"]["error"]; // 0 for false... and 1 for true 

    $wildcard="maps/".substr($filename,0,strpos($filename,"."))."*"; 
    foreach (glob($wildcard) as $path) 
     { 
     unlink($path); 
     } 
    if(move_uploaded_file($file_tmp_loc,"maps/".$filename)) 
+0

질문에 PHP 파일 업로드 스크립트 코드를 추가하십시오. –

+0

업로드 중에 PHP가 파일을 읽지 않는다고 생각하면 다른 곳에서도 문제를 검색 할 것입니다. 어쩌면 사진을 조작 할 수있는 클라이언트 측 라이브러리 또는 중간에있는 매우 까다로운 보안 소프트웨어가있을 수 있습니다. (나는 또한 $ _FILES [ "file"] [ "error"]'를 읽었지만 그것을 사용하지 않는 것으로 나타났습니다. 주석이 말하는대로 0 또는 1이 아닙니다.) –

+0

내가 사용하고있었습니다. $ _FILES [ "file"] [ "error"] 처음에는 문제를 해결했지만 현재는 해결할 수 없습니다. 그렇다면 PHP 스크립트가 시작되기 전에 AJAX 트랜잭션 중에 hangup이 발생했다는 말입니까? – Ingo

답변

0

, PHP 자체도 업로드하는 동안 파일을 읽지 않습니다; 그것도 그것의 종횡비는 말할 것도없고 JPEG입니다.

그래서 누군가은 업로드하는 동안 해당 파일을 사용해야합니다. 아마도 우리는 일부 JPEG 취약성에 대한 지나치게 영리한 방화벽 규칙의 원치 않는 영향을 조사하고있을 것입니다. 동일한 파일을 짧은 덩어리의 쓰레기와 함께 추가 한 후 업로드 해보십시오. 그것은 JPEG되는 것을 멈출 것이지만 대부분의 IDS는 그것이 무엇이든지간에 여전히 "볼"것이며 반응합니다. 파일이 더 이상 이미지가 아니더라도 업로드가 계속 차단되면 방화벽/IDS 간섭에 대한 강력한 인수가 될 것으로 생각됩니다.

업로드 서버를 관리하는 사람과 이야기하면 도움이 될 수도 있습니다.

하지만 그 전에는 큰 파일이 제대로 업로드 되나요? 무엇이 인코딩 된 크기이며 원본 이미지 크기가 아닙니다. php.ini에서 upload_max_filesizepost_max_size을 확인하십시오.

관련 문제