Как удалить файл на сервере?FilePond.revert не передает параметры в контроллер laravel - PullRequest
2 голосов
/ 07 апреля 2019

FilePond.revert не передает уникальные файлы идентификаторов на контроллер laravel.

Как удалить загруженный файл по идентификатору?

FilePond JS

var csrf = $('meta[name="csrf-token"]').attr('content'); 

    FilePond.setOptions({
        server: {
            url: '/file/upload/',
            process: {
                url: 'process',
                headers: {
                    'X-CSRF-TOKEN': csrf
                },
                onload: function (responce) {
                    console.log(JSON.parse(responce))
                },
            },
            revert: {
                url: 'revert',
                headers: {
                    'X-CSRF-TOKEN': csrf
                },
                onload: function (x) {

                    // X - empty, why????
                    console.log(x)

                },
            },
            load: {
                url: 'load/',
            },
        },
    })

    FilePond.create(document.querySelector('.filepond[type="file"]'), {
        files: [
            {
                source: '11',
                options: {
                    type: 'local',
                }
            },
        ]
    });

Загрузка картинок успешно работает. В ответ вернуть уникальный файл идентификатора.

public function process(){

        $file = FilesUploadService::save();

        return response($file->collection->id, 200)
            ->header('Content-Type', 'text/plain');
    }

Пусто здесь я не могу найти идентификатор файла. Который нужно удалить

public function revert(Request $request){
        return response()->json($request->all());
    }

Ответы [ 3 ]

0 голосов
/ 11 апреля 2019

Ты заставил это работать? FilePond использует заголовок DELETE при возврате, поэтому, возможно, вы ничего не получаете из запроса.

Может быть, как-то так?

public function revert(){
    $response = new stdClass();
    if ($_SERVER['REQUEST_METHOD'] === 'DELETE') {
    $file_name = strip_tags(file_get_contents("php://input"));
        if (is_string($file_name) && FilesUploadService::delete($file_name)) {
            $response->id = $file_name;
            $response->success = true;
        } else {
            $response = false;
        }
    } else {
        $response = false;
    }
    return response()->json($response);
}
0 голосов
/ 16 июля 2019

Кто-нибудь еще борется:

request-> getContent () вернет полезную нагрузку запроса, отправленную filepond.

В методе возврата в контроллере:

public function revert(Request $request){
     $fileId = request()->getContent();
     //use $fileId to delete file from filesystem
}
0 голосов
/ 08 апреля 2019

Приведенный ниже метод onload должен возвращать уникальный идентификатор в FilePond. Так, например, если уникальный идентификатор найден в responce.id, вы добавляете строку возврата, как показано.

onload: function (responce) {
    console.log(JSON.parse(responce))
    return JSON.parse(responce).id // added
},
...