Uploadifyを使用してファイルをアップロードするときにサーバーがエラー(HTTP応答コード!= 200)を返すと、アップロードされたファイルの背景が赤になり、次のようなメッセージが表示されます。
file.jpg (52.78KB) - HTTP Error
hTTPエラーが発生したことを示します。しかし、それはユーザーにとってあまり役に立ちません。より詳細なエラーメッセージを表示するにはどうすればよいですか?例:「有効な画像ではありません」または「クォータがいっぱいです」?
これらのメッセージをHTTP応答本文で渡すことを考えていましたが、Uploadifyはそれらを取得しません。エラーメッセージをUploadifyに返す既知の方法はありますか?
エラーの処理方法については、uploadifyフォーラムのこれら2つの投稿をご覧ください。
onErrorで何が起こっているかを表示します および スクリプトエラーレポートをアップロードします
そこにはたくさんの役立つ情報があります..
更新
以下は私のためにトリックをするようです..
'onComplete': function(a, b, c, d, e){
if (d !== '1')
{
alert(d);
}
else
{
alert('Filename: ' + c.name + ' was uploaded');
}
}
このバージョンのuploadifyスクリプトと組み合わせる
<?php
if (!empty($_FILES))
{
$tempFile = $_FILES['userfile']['tmp_name'];
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';
$targetFile = str_replace('//','/',$targetPath) . $_FILES['userfile']['name'];
move_uploaded_file($tempFile,$targetFile);
switch ($_FILES['userfile']['error'])
{
case 0:
$msg = ""; // comment this out if you don't want a message to appear on success.
break;
case 1:
$msg = "The file is bigger than this PHP installation allows";
break;
case 2:
$msg = "The file is bigger than this form allows";
break;
case 3:
$msg = "Only part of the file was uploaded";
break;
case 4:
$msg = "No file was uploaded";
break;
case 6:
$msg = "Missing a temporary folder";
break;
case 7:
$msg = "Failed to write file to disk";
break;
case 8:
$msg = "File upload stopped by extension";
break;
default:
$msg = "unknown error ".$_FILES['userfile']['error'];
break;
}
}
if ($msg)
{ $stringData = "Error: ".$_FILES['userfile']['error']." Error Info: ".$msg; }
else
{ $stringData = "1"; } // This is required for onComplete to fire on Mac OSX
echo $stringData;
?>
残念ながら、onUploadErrorイベントは応答本文にアクセスできません。私の知る限り、200ステータスを返し、onUploadSuccessのエラーを処理する必要があります。
これが私がそれをしている方法です:
'onUploadSuccess' : function(file, data, response) {
var responseObj = JSON.parse(data);
if(responseObj.error_message)
{
$("#" + file.id).hide(); // this will hide the misleading "complete" message..
alert(responseObj.error_message);
return;
}
}
または、「完了」メッセージを次のようなエラーメッセージに置き換えることもできます。
'onUploadSuccess' : function(file, data, response) {
var responseObj = JSON.parse(data);
if(responseObj.error_message)
{
$("#" + file.id).find('.data').css('color', 'red').html(' - ' + responseObj.error_message);
return;
}
console.log(file, data, response);
}
私も同じ問題を抱えています。何時間も検索した後、私は問題を見つけました。 「インターネットオプション-> LAN設定」で「プロキシサーバー」を設定しましたが、デフォルトの状態に戻すと、uploadifyが再び機能しました。
Uploadifyバージョン3.0以降の場合は、 onUploadSuccess オプション(具体的にはdataという名前の渡された変数)を確認してください。これには、サーバーがエコーしたものがすべて含まれます。 JSONをエコーする場合は、次のようにデコードすることを忘れないでください。
...
'onUploadSuccess' : function(file, data, response) {
if (response){
var json_data=JSON.decode(data);
/* code here */
}
},
....