0

我将 angular-upload-file 与使用 PHP Slim 框架构建的服务器端一起使用。在我的 FileUploader 配置中,我只有:

$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 Slim 的情况下放置此代码时,它工作正常,但是当我尝试用 PHPSlim 包装它时,我收到的是 GET 请求而不是 POST:

在此处输入图像描述

使用这样的代码:

 $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,因为我使用中间件来处理一些必需的身份验证请求。

提前致谢,

4

1 回答 1

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' ];
于 2015-07-14T14:18:34.893 回答