php - 对包含大于 1MB 文件的 Laravel 的 POST 请求失败
问题描述
在 POST 请求中发送大于 1MB 的文件时,我(failed)
在 Chrome 中得到响应。小于 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 entity too large http 状态码)
PHP 限制
您正确调整以下内容:
upload_max_filesize
post_max_size
file_uploads
max_file_uploads
检查您的 PHP 错误和访问日志以获取更多信息。
数据库限制
如果将数据解析到数据库,那也可能有一些限制。对于 MySQL,请考虑以下事项:
max_allowed_packet
浏览器
浏览器或 JavaScript 可能会取消请求,请检查您的控制台是否有警告,确保您没有发送错误的标头,请求被浏览器插件或类似取消。
推荐阅读
- excel - 我可以使用 Vlookup 来获得匹配,然后再往前走吗
- javascript - 创建数组的更好方法?
- mysql - Go gorm 预加载多对多
- reactjs - 动作必须是普通对象,我该如何改进我的动作?
- python - Python can't find "__main__" module
- html - 如何在输入字段reactjs中设置输入字母数字值格式?
- python - 如何使用 Python 从 Google Drive API 初始化 drive_service 对象?
- javascript - Electron Custom Protocol with oAuth redirect
- c - My code wont execute properly, I'm using C, I,'m getting no errors. I may have a misunderstanding of the operations
- java - Recyclerview 不在嵌套的 ScrollView 内滚动