2016-08-31 10 views
0

私は最終的にはテキストファイルを扱うように見える以外は、私の非同期ファイルのアップロードを動作させました。ファイルのアップロード302?

テキストファイルをアップロードすると、そのファイルが動作して保存されます。イメージをアップロードすると、応答が302のステータスを返すというファイルが作成され、私のpublic_htmlのルートディレクトリに送信されます。

ファイルサイズに関係すると思われますが、テキストファイルをイメージよりも大きくして、うまくいきました。

トラブルシューティングを開始する場所がわからないため、以下でPHP関連のスニペットを配置します。

PHP

$fn = (isset($_SERVER['HTTP_X_FILENAME']) ? $_SERVER['HTTP_X_FILENAME']:false); 
echo $fn; 

try{ 
    file_put_contents("upload/".$fn, file_get_contents("php://input")); 
    //echo file_get_contents("upload/".$fn); 
}catch(exception $e){ 
    echo $e->getMessage(); 
} 

JS

function UploadFile(file){ 
    var xhr = new XMLHttpRequest(); 
    //on the below if 
    //xhr.upload: returns a XMLHttpRequestUpload Object, I believe just to check if it's supported in broswer 
    if (xhr.upload){ 
     xhr.open("POST","http://domain.com/absolutepath/what.php",true); 
     xhr.setRequestHeader("X-FILENAME",file.name); 

     xhr.onreadystatechange = function(){ 
     if(xhr.status == 200 && xhr.readyState == 4){ 
      callback(xhr.responseText); 
     } 
    } 
    xhr.send(file); 
    }else{ 
     alert("Sorry, don't think this is supported in your browser."); 
    } 
} 

私が設定されなければならないリクエストヘッダはありますか?私は変更する必要があるphp.iniの何かですか?私の最大ポストサイズは32MBだと思います。

+0

[ファイルアップローダリターンエラーの可能性の重複:あなたが管理者である場合は、Apacheの設定では、クライアント、または編集している場合は、ホスティングアカウントのためのあなたの.htaccessファイルにこのコードを追加し、この問題を回避するには

302](http://stackoverflow.com/questions/12029743/files-uploader-return-error-302) –

答えて

1

302はエラーコードではなく、ステータスコードです。これは、サーバーがあなたを別のページにリダイレクトしていることを意味します。しかし、ステータスOKとFoundで。

この問題は通常、サーバがmod-securityになっており、フィルタエンジンがフィルタリングをアップロードしているために発生します。

<IfModule mod_security.c> 
SecFilterEngine Off 
SecFilterScanPOST Off 
</IfModule> 
+0

正しいパス上にいる可能性があります。私のホスティングアカウントでそれを変更しても何も変わっていない、私は行くよ私のウェブホストに戻って、彼らが助けることができるかどうかを見てください。もっと読むことができますか? – spkvn

+0

はい、アップロードエラーのあるmod_securityを検索してください。 Googleにはたくさんの記事があります。オフにするかどうかテストするには、ローカルホストで試してください。がんばろう! –