2015-07-14 7 views
0

Я использую файл угловой загрузки с серверной версией, созданной с помощью PHP Slim Framework. На моем FileUploader конфигурации я просто:PHPSlim + angular-file-upload

$scope.uploader = new FileUploader({ 
    url: 'upload/upload.php' 
}); 

Затем в моем внутреннем интерфейсе, как соответствующая вика делает:

if (!empty($_FILES)) { 
    $tempPath = $_FILES[ 'file' ][ 'tmp_name' ]; 
    $uploadPath = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'uploads' . DIRECTORY_SEPARATOR . $_FILES[ 'file' ][ 'name' ]; 
    move_uploaded_file($tempPath, $uploadPath); 
    $answer = array('answer' => 'File transfer completed'); 
    $json = json_encode($answer); 
    echo $json; 
} else { 
    echo 'No files'; 
} 

Проблема заключается в том, когда я ставлю этот код без использования PHP Сольет он работает отлично, но когда я пытаюсь обернуть его PHPSlim, я получаю запрос GET вместо POST:

enter image description here

с таким кодом:

$scope.uploader = new FileUploader({ 
    url: 'API/upload/img' 
}); 

И в API:

$app->post('/upload/img', function(){ 
if (!empty($_FILES)) { 
    $tempPath = $_FILES[ 'file' ][ 'tmp_name' ]; 
    $uploadPath = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'uploads' . DIRECTORY_SEPARATOR . $_FILES[ 'file' ][ 'name' ]; 
    move_uploaded_file($tempPath, $uploadPath); 
    $answer = array('answer' => 'File transfer completed'); 
    $json = json_encode($answer); 
    echo $json; 
} else { 
    echo 'No files'; 
} 

});

Я пытаюсь выяснить, откуда эта проблема, сервер или клиентская сторона? Я попытался использовать подобный плагин ng-file-upload, но у меня точно такая же проблема, поэтому я думаю, что это должен быть PHPSlim, но я не уверен.

Мне нужно использовать PHPSlim, потому что я использую промежуточное программное обеспечение для некоторых требуемых запросов на аутентификацию.

Спасибо заранее,

ответ

0

Сначала вам нужно вызвать правильный адрес для API:

var uploader = $scope.uploader = new FileUploader({ 
    url: 'api/path/upload' 
}); 

в бэкэнде вам нужен

$app->post('/upload', function() { 
     if (!empty($_FILES)) {... 
     } 
}) 

если у вас есть проблема с ответом сообщений необходимо форматированный Я построю следующим образом:

$answer = array(
      'status' => 'success', 
      'message' => 'File transfer completed', 
     ); 
... 
    echoResponse(200, $answer); 
... 
    function echoResponse($status_code, $response) { 
     global $app; 
     $app->status($status_code); 
     $app->contentType('application/json'); 
     echo json_encode($response, JSON_NUMERIC_CHECK); 
    } 

также создавать и разрешения папки набора для записи

$uploadPath = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'uploads' . DIRECTORY_SEPARATOR . $_FILES[ 'file' ][ 'name' ]; 
+0

Это именно то, что я делал, маршруты матчей, но у меня нет какого-либо запроса POST сделанного с тонкой оболочкой. Интересно, работает ли плагин только с файлом, а не с маршрутами. – Romf7890

+0

Добавьте полный код в свой контроллер, и у вас будут отчеты в браузере. [angularFileUploadController] (https://github.com/nervgh/angular-file-upload/blob/master/examples/simple/controllers.js). – mlivan

+0

Вы называете правильным действием? Попробуйте вызвать в браузере другие действия API, все работают как шарм на моем компьютере. Вы правильно ... Как вы реализуете контроллер и как выглядят ваши структуры данных (папки и файлы)? – mlivan

Смежные вопросы