POST 请求 Laravel 包含大于 1MB 的文件失败
Failed POST request to Laravel containing files larger than 1MB
在 POST 请求中发送大于 1MB 的文件时,我在 Chrome 中收到 (failed)
响应。小于 1MB 的文件工作正常,所以我预计某些东西设置了 1MB 的限制。
我 运行 phpinfo()
检查我的 php.ini 文件中的值,它显示 upload_max_filesize=100M
和 post_max_size=100M
。我还检查了 Laravel 日志,但没有关于此的错误。
我在装有 PHP 7.4.5 的 Homestead 盒子上使用 Laravel 6.18.13 运行。我的前端应用程序正在使用 Angular 9。这是发送请求的 Angular 中的代码:
const formData = new FormData();
params.files.forEach((file: File) => {
formData.append(`audio_files[]`, file, file.name);
});
return this.http.post<APIResponse>(url, formData);
任何关于可能设置此 1MB 限制的想法都将受到赞赏。
大多数网站都有多个层次需要考虑:
- 网络服务器/反向代理,例如nginx
- php 进程
- 数据库
- 浏览器安全
Nginx 限制
对于 nginx,请确保正确设置 client_max_body_size
指令。必须同时在 http 和服务器上下文中设置。
(会产生 413 实体太大的 http 状态代码)
PHP 限制
你的调整是正确的:
upload_max_filesize
post_max_size
file_uploads
max_file_uploads
另请检查您的 PHP 错误和访问日志以获取更多信息。
数据库限制
如果数据被解析到数据库,那也可能有一些限制。对于 MySQL,请考虑以下内容:
max_allowed_packet
浏览器
浏览器或 JavaScript 可以取消请求,请检查您的控制台是否有警告,确保您没有发送错误 headers,请求已被浏览器插件或类似工具取消。
在 POST 请求中发送大于 1MB 的文件时,我在 Chrome 中收到 (failed)
响应。小于 1MB 的文件工作正常,所以我预计某些东西设置了 1MB 的限制。
我 运行 phpinfo()
检查我的 php.ini 文件中的值,它显示 upload_max_filesize=100M
和 post_max_size=100M
。我还检查了 Laravel 日志,但没有关于此的错误。
我在装有 PHP 7.4.5 的 Homestead 盒子上使用 Laravel 6.18.13 运行。我的前端应用程序正在使用 Angular 9。这是发送请求的 Angular 中的代码:
const formData = new FormData();
params.files.forEach((file: File) => {
formData.append(`audio_files[]`, file, file.name);
});
return this.http.post<APIResponse>(url, formData);
任何关于可能设置此 1MB 限制的想法都将受到赞赏。
大多数网站都有多个层次需要考虑:
- 网络服务器/反向代理,例如nginx
- php 进程
- 数据库
- 浏览器安全
Nginx 限制
对于 nginx,请确保正确设置 client_max_body_size
指令。必须同时在 http 和服务器上下文中设置。
(会产生 413 实体太大的 http 状态代码)
PHP 限制
你的调整是正确的:
upload_max_filesize
post_max_size
file_uploads
max_file_uploads
另请检查您的 PHP 错误和访问日志以获取更多信息。
数据库限制
如果数据被解析到数据库,那也可能有一些限制。对于 MySQL,请考虑以下内容:
max_allowed_packet
浏览器
浏览器或 JavaScript 可以取消请求,请检查您的控制台是否有警告,确保您没有发送错误 headers,请求已被浏览器插件或类似工具取消。