2016-06-14 4 views
0

私は基本的なPHPファイルアップロードスクリプトを持っています。アップロードスクリプトに変更はありません。テスト/トラブルシューティングでは、jpeg画像の向きが横長(高さよりも広い)で、ファイルが4.5MBより大きい場合、アップロードされるファイルの約7%でダウンロードがロックされることに気付きました。画像を縦向きに回転してファイルサイズを同じにしたり、画像のサイズを小さくして横向きにしたりすると、アップロードが完了します。PHP画像のアップロードが横向きになっていません

私が困惑しているのは、縦長のファイルが大きくなるとアップロードがうまくいくということです。サーバーにファイルをアップロードするときに画像の方向は問題になりますか?

最初に私はアップロードをセットアップしてからPHPスクリプトを呼び出すためにJavascriptとAJAXを使用しています。 Javascriptを/ 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は次のとおりです。

$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トランザクション中にハングアップが起きていると言っていますか? – Ingo

答えて

0

@ÁlvaroGonzálezが観察されたようにアップロード中に、PHP 自体でもファイルを読み取れません。アスペクト比はもちろんのこと、JPEGであることはわかりません。

だから誰かはアップロード中にそのファイルで何かをしているに違いありません。おそらく、脆弱なファイアウォールルールがJPEGの一部の脆弱性に対して望ましくない影響を受けている可能性があります。同じファイルに短いゴミの塊を付けてアップロードしてみてください。それはJPEGを止めるでしょうが、ほとんどのIDSはそれが何であれ、それを "見て"、反応します。ファイルがイメージではなくなってもアップロードがブロックされても、ファイアウォール/ IDSの干渉が強くなると思います。

アップロードサーバーを管理している人と話すことで、光を放つのに役立つかもしれません。

しかし、これを行う前に、が確実にそのように大きなファイルが正しくアップロードされますか?何が重要なのは符号化サイズで、元の画像サイズではありません。 php.iniにupload_max_filesizepost_max_sizeをチェックしてください。

関連する問題