Laravel Spark загрузить фотографию профиля на внешний драйвер - PullRequest
0 голосов
/ 18 ноября 2018

Я хочу переопределить способ, которым Laravel Spark сохраняет изображение профиля пользователя, чтобы использовать внешний драйвер, например, S3.У меня уже есть конфигурация S3 для корзины, которую я хочу использовать.Каков был бы лучший способ сделать это?Должен ли я использовать совершенно другой маршрут и использовать пользовательскую конечную точку или есть где-то конфигурация, которую я мог бы изменить, чтобы Spark использовал другой драйвер?

1 Ответ

0 голосов
/ 22 ноября 2018

Итак, в конечном итоге это

Я добавил эти методы в update-profile-photo.js

methods: {
    updateProfilePhoto() {

        axios.post('/settings/profile/details/profile-picture', this.gatherFormData())
            .then(
                () => {
                    console.log('Profile picture updated');
                    Bus.$emit('updateUser');

                    self.form.finishProcessing();
                },
                (error) => {
                    self.form.setErrors(error.response.data.errors);
                }
            );
    },
    gatherFormData() {
        const data = new FormData();

        data.append('photo', this.$refs.photo.files[0]);

        return data;
    }
}

И мой контроллер выглядел так

public function updateProfilePicture(Request $request)
{
    $this->validate($request, [
        'photo' => 'required',
    ]);

    // Storing the photo
    //get filename with extension
    $filenamewithextension = $request->file('photo')->getClientOriginalName();

    //get filename without extension
    $filename = pathinfo($filenamewithextension, PATHINFO_FILENAME);

    //get file extension
    $extension = $request->file('photo')->getClientOriginalExtension();

    //filename to store
    $filenametostore = $filename.'_'.time().'.'.$extension;

    Storage::disk('s3_users')->put($filenametostore, fopen($request->file('photo'), 'r+'), 'public');

    $url = $filenametostore;

    $request->user()->forceFill([
        'image_url' => $url
    ])->save();


    return response()->json(
        array(
            "message" => "Profile picture was updated!",
        )
    );

}
...