如何通过FilePond使用Laravel将文件(图片)上传到服务器,如何进行?

时间:2020-01-29 19:34:40

标签: laravel file-upload filepond

我正在尝试在用户注册Laravel 6项目期间使用FilePond上传个人资料图片。 然后,在我的register.blade.php中,有一个<input type="file" id="profilePicture" name="profile_picture" accept="image/png, image/jpeg, image/gif">,在我写的文件的底部:

$('input[type="file"]').filepond();

FilePond.setOptions({
    server: {
        url: '/upload',
        method: 'POST',
        headers: {
            'X-CSRF-TOKEN': '{{ csrf_token() }}'
        }
    }
});

/routes/web.php中我添加了:

Route::post('/upload', 'FilepondController@upload');

最后,为简单起见,并且仅检查上传是否有效,我在/app/Http/Controllers/FilepondController.php中写道:

class FilepondController extends BaseController
{
    public function upload(Request $request)
    {
        dd($request);
    }
}

但是应用程序绝对不会转储$ request并使其消失...显然,通过FilePont上传失败。

我也尝试使用Sopamo/laravel-filepond(Laravel FilePond后端),但没有成功...

怎么了?

3 个答案:

答案 0 :(得分:1)

有适用于Filepond的laravel软件包可能对您有用

  1. https://packagist.org/packages/cnviradiya/laravel-filepond

易于使用的上传文件,您可以在控制器中获取它

答案 1 :(得分:1)

FilePond.setOptions({
    server: '{{route('upload')}}',
    method: 'POST',
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    },
});

答案 2 :(得分:0)

您可以在Storage Facade上使用putFile方法

默认情况下,putFile方法将生成一个唯一ID,以用作 文件名。文件扩展名将通过检查确定 文件的MIME类型。该文件的路径将由 putFile方法,以便您可以存储路径,包括生成的文件 名称,在您的数据库中。

//...
$path = Storage::putFile('avatars', $request->file('profile_picture'));
$model->profile_picture = $path;
//...

您还可以使用storage:link Artisan命令:

php artisan storage:link