
Laravel 用户创建时通过 Canvas 签名上传 PNG 文件,常因未在表单提交中正确传递 signature 数据导致存储文件为空或损坏;本文详解问题根源、完整修复方案及安全实践。
laravel 用户创建时通过 canvas 签名上传 png 文件,常因未在表单提交中正确传递 `signature` 数据导致存储文件为空或损坏;本文详解问题根源、完整修复方案及安全实践。
在使用 signature-pad 库结合 Laravel 表单提交用户数据时,一个典型却隐蔽的问题是:签名图像文件被成功创建,但大小恒为 0KB,无法打开。根本原因并非存储逻辑错误,而是 前端未将 Canvas 生成的签名数据实际提交至后端控制器。
你当前的 JavaScript 代码中,fetch('/check-usercode', ...) 仅校验 user_code 是否重复,但该请求并未携带签名数据;而后续真正的表单提交(document.getElementById('userForm').submit())又未将 signaturePad.toDataURL() 的值注入到表单字段中——导致控制器 $request->signature 始终为空,base64_decode() 处理空字符串后写入磁盘,自然生成 0KB 的无效文件。
✅ 正确解决方案:确保签名数据随表单一同提交
1. 在 HTML 表单中添加隐藏输入域
在你的 Blade 模板中(如










