You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Eloquent无法通过POST插入大段HTML内容

解决Laravel插入大段HTML到MySQL时Postman无响应的问题

我之前也碰到过类似的情况,小段HTML能正常保存,一提交大模板就没响应,大概率是请求大小限制、数据库字段类型或者超时设置的问题,一步步排查试试:

1. 先检查数据库字段类型

MySQL的TEXT类型最多只能存65535个字符,大HTML模板肯定超了,得换成LONGTEXT(支持最多4GB内容):

  • 要么修改迁移文件,把eml_html字段改成longText():
    $table->longText('eml_html');
    
    然后运行php artisan migrate:refresh(注意提前备份数据!);
  • 要么直接通过数据库管理工具(比如phpMyAdmin、Navicat)把字段类型改成LONGTEXT。

2. 调整PHP的请求大小限制

PHP默认的POST请求大小限制比较小,大HTML会触发截断或者直接被拒绝:
找到你的php.ini文件(可以通过phpinfo()查看路径),修改这几个参数:

post_max_size = 64M       # 按需调整,比如128M
upload_max_filesize = 64M
memory_limit = 256M       # 给PHP足够内存处理大内容

修改完记得重启Web服务器(Apache/Nginx)和PHP-FPM(如果用的是FPM模式)。

3. 调整Web服务器的请求限制

如果你用Nginx:

在nginx.conf或者站点配置文件里,添加/修改:

client_max_body_size 64M;

然后重启Nginx:sudo service nginx restart

如果你用Apache:

在httpd.conf或者项目根目录的.htaccess里添加:

LimitRequestBody 67108864  # 64MB对应的字节数,按需调整

重启Apache:sudo service apache2 restart

4. 调整Postman的超时设置

Postman默认的超时时间可能太短,大请求还没处理完就被断开了:
打开Postman的「Settings」→「General」,找到「Timeout」,把数值调大(比如设为30000毫秒,也就是30秒),保存后再重新测试。

5. 检查Laravel的请求处理细节

  • 先确保EmailTemplates模型里的$fillable包含eml_html字段,不然会被Laravel的批量赋值保护拦截:
    protected $fillable = ['eml_html'];
    
  • 保存的时候可以试试用$request->input('eml_html')代替$request['eml_html'],虽然逻辑相近,但input方法处理大内容更稳定:
    $eml = new EmailTemplates();
    $eml->eml_html = $request->input('eml_html');
    $result = $eml->save();
    
  • 如果还是不行,去storage/logs/laravel.log里找错误日志,比如有没有SQL报错、内存溢出的提示,根据日志再针对性解决。

内容的提问来源于stack exchange,提问作者user3548161

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:34:07