【问题标题】:Upload a file (picture) to server with Laravel using FilePond, how?使用 FilePond 使用 Laravel 将文件(图片)上传到服务器,如何?
【发布时间】:2020-05-15 09:06:38
【问题描述】:

我正在尝试在 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 后端)但没有成功...

怎么了?

【问题讨论】:

  • 您是否在浏览器开发人员工具的网络选项卡中看到 POST 上传请求?请注意,FilePond 将文件作为多部分表单数据和 json 字符串(附加到文件的元数据)发布在相同的字段名称下,在本例中为 profile_picture
  • 我使用 Sopamo/laravel-filepond 解决了这个问题,该 repo 中包含的上传控制器中有一个错误(它是 $file = $request->file('file')[0]; 但我在 $file = $request->files('filepond'); 中更正了,所以现在我需要发布定制它的包,我尝试了php artisan vendor:publish --provider="Sopamo\LaravelFilepond\LaravelFilepondServiceProvider" GitHub repo 上写的,但我得到了Unable to locate publishable resources.,怎么了?

标签: laravel file-upload filepond


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

【讨论】:

    【解决方案2】:

    有可用于文件池的 laravel 包可能对你有用

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

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

    【讨论】:

      【解决方案3】:

      您可以在 Storage 门面上使用 putFile 方法

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

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

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

      php artisan storage:link
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-28
        • 2019-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多