我正在发出更新Mysql表的Ajax请求。当我成功上传pdf文件时,相应地在表中更新文件名和文件路径。我得到的问题是这个。当我上传一个小文件(414kb)时,上传成功,我可以更新我的记录。当文件很大(3.6Mb)时,上传显示成功,但我从Ajax请求获得的responseText是空白。我使用IF / ELSE语句处理了php端,因此不应该有“空白”响应。 我真的不明白问题出在哪里。请参阅下面的代码。
我的'upload_max_filesize'是32M。
JS:
function completeHandler(event){
document.getElementById('p_status').style.color = '#19A347';
if(xmlhttp_file.readyState == 4 && xmlhttp_file.status == 200){
if(xmlhttp_file.responseText == 'update_success'){
console.log('congratulations. Success');
}else{
console.log('fail!');
console.log('responsText: '+xmlhttp_file.responseText);
console.log('xmlhttp_file.readyState: '+ xmlhttp_file.readyState);
console.log('xmlhttp_file.status: '+ xmlhttp_file.status);
}
}
}
PHP:
$move_success = move_uploaded_file($file_TmpPath, "$pdf_dir/$file");
if($move_success){
// ESCAPE CHARACTERS BEFORE INSERTION INTO _DB
// INSERT 'filename', 'filename_uniq', 'filepath'
$file_name = $mysqli->real_escape_string($file_name);
$file_id = $mysqli->real_escape_string($file_id);
$file = $mysqli->real_escape_string($file);
$filepath = $mysqli->real_escape_string("$pdf_dir/$file");
$sql = "UPDATE pdf_library SET filename='$file_name', filename_uniq='$file_id', filepath='$filepath' WHERE id='$idOfPost'";
$result = $mysqli -> query($sql);
if($result){
echo 'update_success';
}else{
echo 'update_fail';
}
}else{
echo 'move fail';
}
上传大型pdf时 - 控制台:
fail!
new_home.js:1473 responsText:
new_home.js:1474 xmlhttp_file.readyState: 4
new_home.js:1475 xmlhttp_file.status: 200
答案 0 :(得分:0)
PHP会自动限制文件大小,只会上传某些尺寸。看起来您检查的文件大小是否等于或低于允许的最大文件大小。默认值为2 MB,您必须更改它才能上传更多内容。
答案 1 :(得分:0)
您应该在$_FILES
或move_uploaded_file
上执行错误调试,以准确了解正在发生的事情(尽管您可能会遇到MAX_FILE_SIZE
配置,因为这是第一次直觉,如果你在较大的文件大小上得到不同的结果)
您可以通过签入$_FILES
$_FILES['filename']['error']
全局变量