【发布时间】:2022-01-08 14:25:42
【问题描述】:
我正在使用 AJAX 上传两个图像(采用 base64 编码)。如果图像很小(例如,一张图像 500kB,另一张图像 300kB,总共
有什么想法可能是错的吗?
这里是ajax:
$.ajax({
url:'upload.php',
method:'POST',
contentType:"application/x-www-form-urlencoded",
data: {orig:original,image:cropped},
success:function(data)
{
$modal.modal('hide');
}
});
这是 PHP 代码:
echo print_r($_POST);
这是 PHP 设置:
file_uploads On
max_execution_time 120
max_file_uploads 20
post_max_size 256M
upload_max_filesize 256M
【问题讨论】:
-
在开发者控制台中,您是否看到服务器错误消息?服务器本身(Apache、Nginx 等)也可能有限制。例如,Nginx 通常默认为 2MB,而 base64 编码的 1.5MB 非常接近。
-
@ChrisHaas 我在开发者控制台中没有看到任何错误。但我会尝试与服务器管理员检查这些限制。谢谢!
-
要进一步调试,暂时忘记 AJAX,只需制作一个简单无聊的 HTML 表单并上传文件,然后尝试一个大文件。然后您应该会看到一个响亮的错误消息。
-
感谢您的建议。我尝试了简单的 HTML 上传 - 它适用于大文件 (20MB+)。我还尝试简化 ajax 代码以仅上传一张图像并尝试不同的图像大小。似乎在 1MB 的发送数据(控制台中的有效负载)处有明确的截止日期。如果上传的变量超过 1MB,则不接收(但接收其余部分)。
-
我刚刚在不同的虚拟主机上尝试过,它在那里运行良好。所以看起来它确实是一些服务器设置。将与虚拟主机管理员一起解决它。
标签: javascript php ajax file-upload