如何在 Laravel 中使用 filepond 发送 DELETE 请求?
How to send DELETE request with filepond in Laravel?
FilePond 可以使用 POST 请求类型上传文件,因此在 Laravel 中没问题。但是,FilePond 在 reverting/removing 上传 file/s 时发送 DELETE 请求。 Laravel 不直接支持 DELETE 请求,而是使用带有 DELETE 值的 _method 字段作为 POST 请求发送。
所以现在我正在发出 POST 删除请求,但似乎无法弄清楚 如何将数据添加到我在 FilePond 中的还原请求。我的选项如下所示:
FilePond.setOptions({
server: {
...
revert: {
url: '/filepond',
method: 'POST',
headers: {
'X-CSRF-TOKEN': csrf_token
}
}
...
}
});
Laravel需要的数据(要在POST请求中添加的数据不是在header中而是在表单数据中)。
'_method': 'DELETE'
经过几个小时的研究,我仍然找不到合适的解决方案。这是因为 Laravel 不直接处理 DELETE 请求,但需要在 POST 请求中将一个字段作为 _method 传递,其中包含 DELETE 值。
FilePound,确实支持发送 POST 请求,但不允许发送数据,例如此场景中所需的 _method 字段。
我的解决方案是添加一个 header 字段(FilePond 支持)并将请求类型添加为 header 字段,如下所示:
FilePond.setOptions({
server: {
process: {
....
},
revert: {
url: '{{ route('your-route') }}',
method: 'POST',
headers: {
'X-CSRF-TOKEN': csrf_token,
'_method': 'DELETE'
}
}
}
});
由于Laravel无法确定这是一个删除请求,它将被处理为POST请求,因此您必须执行检查以查看是否有DELETE字段传入 header,像这样:
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 实例中恢复上传)
FilePond 可以使用 POST 请求类型上传文件,因此在 Laravel 中没问题。但是,FilePond 在 reverting/removing 上传 file/s 时发送 DELETE 请求。 Laravel 不直接支持 DELETE 请求,而是使用带有 DELETE 值的 _method 字段作为 POST 请求发送。
所以现在我正在发出 POST 删除请求,但似乎无法弄清楚 如何将数据添加到我在 FilePond 中的还原请求。我的选项如下所示:
FilePond.setOptions({
server: {
...
revert: {
url: '/filepond',
method: 'POST',
headers: {
'X-CSRF-TOKEN': csrf_token
}
}
...
}
});
Laravel需要的数据(要在POST请求中添加的数据不是在header中而是在表单数据中)。
'_method': 'DELETE'
经过几个小时的研究,我仍然找不到合适的解决方案。这是因为 Laravel 不直接处理 DELETE 请求,但需要在 POST 请求中将一个字段作为 _method 传递,其中包含 DELETE 值。
FilePound,确实支持发送 POST 请求,但不允许发送数据,例如此场景中所需的 _method 字段。
我的解决方案是添加一个 header 字段(FilePond 支持)并将请求类型添加为 header 字段,如下所示:
FilePond.setOptions({
server: {
process: {
....
},
revert: {
url: '{{ route('your-route') }}',
method: 'POST',
headers: {
'X-CSRF-TOKEN': csrf_token,
'_method': 'DELETE'
}
}
}
});
由于Laravel无法确定这是一个删除请求,它将被处理为POST请求,因此您必须执行检查以查看是否有DELETE字段传入 header,像这样:
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 实例中恢复上传)