Laravel 含有文件上传的表单验证流程如何写?

前台有一个表单,其中两项是上传文件(input type='file'),分别是视频和视频封面图,此外这个表单还有其他字段,现在有如下需求:

  1. 上传文件完毕,在表单中显示视频文件地址(在数据库中该字段为 Not Null),和封面图
  2. 表单通过 ajax 请求完成
  3. 一个 ajax 请求能否完成?如果需要两个 ajax 请求,那么文件上传的路由怎么实现?
    请问,这个表单验证流程该如何写?
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 3

驗證規則上,視頻可使用表單驗證器的 mimetypes 規則,圖片則有 image 規則可直接使用
至於你的問題

  1. 應在 request 驗證檔案合法後,在 Controller 中儲存視頻取得文件地址,並存入 DB
  2. 建議獨立拆出一支用來上傳檔案的 API,待回傳文件地址後填入前端表單,再次送出一般 JSON 請求
    這樣做的好處是不用在送出 AJAX 時模擬 FormData,可以「上傳用 FormData,送出表單用 JSON」,邏輯上較清晰
5年前 评论

楼上的方法不错

5年前 评论

@leochien经你指点,我是这么操作的,上传文件,我用的是 input.onchange() 触发 AJAX 请求模拟 FormData,表单提交的 AJAX 请求用 JSON 发出,抛出错误: “ TokenMismatchException”,我已在表单域里添加了 {{csrf_field()}}。
请问是这样操作吗?

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!