Valums FileUploader を使用していますが、ファイルのアップロード後に応答を取得して読み取ることができません。基本的に、成功であろうとエラー メッセージであろうと、onComplete で使用される有用な応答を得ようとしています。
おそらくサーバーを content-type plain/text に設定する必要があるという別の投稿をここで見つけました。確認しましたが、確かにその設定です。
とにかく、チェックするためにさまざまなことを検索して見つけていますが、まだ私の問題を解決しているようには見えません。
アップローダの短縮コードを次に示します。
var uploader = new qq.FileUploaderBasic({
button: document.getElementById('btnUpChange'),
action: templateURL+'/upload.php',
allowedExtensions: ['jpg', 'jpeg', 'png', 'gif'],
onSubmit: function(id, fileName) {
},
onComplete: function(id, fileName, responseJSON) {
var fileMsg = responseJSON;
console.log(fileMsg);
$('#filemsg').html('<span class="red" >'+fileMsg+'</span>');
}
});
アップロード後のコンソールからのテキストは次のとおりです。
"[uploader] xhr - server response received"
"[uploader] responseText = File is too large"
[object Object]
メッセージを取得しようとするためだけに、意図的に $sizeLimit を小さく設定してエラーをスローします。
アップローダの zip に含まれている php.php ファイルをコピーして名前を変更し、最後に次のように追加しました。
$allowedExtensions = array('jpg', 'jpeg', 'png', 'gif');
$sizeLimit = 4 * 1024;
$uploader = new qqFileUploader($allowedExtensions, $sizeLimit);
// Call handleUpload() with the name of the folder, relative to PHP's getcwd()
$result = $uploader->handleUpload('uploads/', $replaceOldFile = true);
if ($result['success'] !== true) {
echo $result['error'];
} else {
echo $result['success'];
}
アップロードが成功すると、onComplete メソッドに 1 が返されます。responseJSON.responseText を使用しようとしましたが、取得したのは「未定義」だけでした。
ご協力ありがとうございました。