laravel - 如何在 Laravel 中使用 filepond 发送 DELETE 请求?
问题描述
FilePond 可以使用 POST 请求类型上传文件,这在 Laravel 中很好。但是,FilePond 在恢复/删除上传的文件时会发送 DELETE 请求。Laravel 不直接支持 DELETE 请求,而是使用带有 DELETE 值的 _method 字段作为 POST 请求发送。
因此,现在我正在发出 POST 删除请求,但似乎无法弄清楚如何在 FilePond 中将数据添加到我的恢复请求中。我的选项如下所示:
FilePond.setOptions({
server: {
...
revert: {
url: '/filepond',
method: 'POST',
headers: {
'X-CSRF-TOKEN': csrf_token
}
}
...
}
});
Laravel 所需的数据(要在 POST 请求中添加的数据不是在标头中,而是在表单数据中)。
'_method': 'DELETE'
解决方案
经过数小时的研究,我仍然找不到合适的解决方案。这是因为 Laravel 不直接处理 DELETE 请求,而是要求在 POST 请求中将一个字段作为 _method 传递,其中包含 DELETE 值。
FilePound 确实支持发送 POST 请求,但不允许发送数据,例如此场景中所需的 _method 字段。
我的解决方案是添加一个标头字段(FilePond 支持)并将请求类型作为标头字段添加,如下所示:
FilePond.setOptions({
server: {
process: {
....
},
revert: {
url: '{{ route('your-route') }}',
method: 'POST',
headers: {
'X-CSRF-TOKEN': csrf_token,
'_method': 'DELETE'
}
}
}
});
由于 Laravel 无法确定这是一个删除请求,它将作为 POST 请求处理,因此您必须执行检查以查看标头中是否传递了 DELETE 字段,如下所示:
public function store(Request $request)
{
if ($request->header("-method") == "DELETE") {
echo "File deleted";
} else {
echo "File uploaded";
}
}
相关作品:
- https://github.com/Sopamo/laravel-filepond(使用 API)
- https://github.com/thedevdojo/image-uploads-with-laravel-and-filepond(在 FilePond 实例中没有恢复上传的选项)
推荐阅读
- sql - 格式化引入 Azure SQL 数据库的数据
- kubernetes - 哪个 apiVersion 与 k8s 作业和 imagePullSecret 一起使用
- python - 使用 Pandas 绘制和处理日期/时间数据
- flutter - 在 ListView.builder() 中选中/取消选中 ListTiles - Flutter
- javascript - 是否可以在 for 循环中遍历长度属性的条件语句?
- java - 用于获取带有连接表的实体的 Spring Data JPA 方法
- javascript - 如何使用 app.locals。javascript中的参数?
- eigen - Eigen3张量切片而不复制数据
- java - 来自 JSP 内的 servlet 编辑的变量
- lambda - AttributeValue java流上的summingDouble