PHP получает данные из запроса DELETE - PullRequest
5 голосов
/ 19 марта 2012

Я использую плагин jquery для загрузки нескольких файлов. Все работает нормально, кроме удаления изображений. Firebug говорит, что JS отправляет запрос DELETE в функцию. Как я могу получить данные из запроса на удаление?

PHP удалить код:

public function deleteImage() {
    //Get the name in the url
        $file = $this->uri->segment(3);
    $r = $this->session->userdata('id_user');
    $q=$this->caffe_model->caffe_get_one_user($r);
        $cff_name= $q->name;
    $cff_id = $q->id_caffe;       

    $w = $this->gallery_model->gallery_get_one_user($gll_id);
    $gll_name = $w->name;
        $success = unlink("./public/img/caffe/$cff_name/$gll_name/" . $file);
        $success_th = unlink("./public/img/caffe/$cff_name/$gll_name/thumbnails/" . $file);

        //info to see if it is doing what it is supposed to 
        $info = new stdClass();
        $info->sucess = $success;
        $info->path = $this->getPath_url_img_upload_folder() . $file;
        $info->file = is_file($this->getPath_img_upload_folder() . $file);
        if (IS_AJAX) {//I don't think it matters if this is set but good for error checking in the console/firebug
            echo json_encode(array($info));
        } else {     //here you will need to decide what you want to show for a successful delete
            var_dump($file);
        }
    }

и JS использует плагин jQuery-File-Upload: ссылка

1 Ответ

10 голосов
/ 19 марта 2012

Обычно, если запрос DELETE отправляет данные в теле запроса, вы можете прочитать данные, используя следующий код:

$data = file_get_contents("php://input");

В зависимости от кодировки данных (обычно в формате JSON или в форме) вы используете json_decode или parse_str для чтения данных в пригодные для использования переменные.

Простой пример см. В этой статье , где автор использует закодированные данные для обработки запроса PUT. DELETE работает аналогично.


В вашем случае, однако, похоже, что имя файла читается из URL-адреса запроса (вызов $this->uri->segment(3);). Когда я смотрю на ваш код, кажется, что переменная $gll_id не инициализирована, и вы не проверяете, являются ли результирующий объект $w и переменная $gll_name пустыми. Может быть, это вызывает сбой удаления. Включите ведение журнала ошибок с помощью ini_set("log_errors",1); и посмотрите журнал ошибок вашего сервера. Если разорвать связь не удастся, в журнале ошибок должен быть указан путь, который PHP пытался разорвать. Вероятно, этот путь неправильный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...