如何从multipart / form-data访问文件[PHP]

时间:2016-01-19 15:02:06

标签: php angularjs

我有一个我的应用程序的前端写入角度,基本上选择文件并发送后端文件名和其余的表单信息:

前端部分看起来像:

$scope.submit = function() {
    if ($scope.file) {
        $scope.upload($scope.file);
    }
};

// upload on file select or drop
$scope.upload = function (file) {
    Upload.upload({
        url: 'sub.php',
        data: {file: file, 'country': $scope.submodelCountry}
    }).then(function (resp) {
        console.log('Success ' + resp.config.data.file.name + ' uploaded. Response: ' + resp.data);
    }, function (resp) {
        console.log('Error status: ' + resp.status);
    }, function (evt) {
        var progressPercentage = parseInt(100.0 * evt.loaded / evt.total);
        console.log('progress: ' + progressPercentage + '% ' + evt.config.data.file.name);
    });
};

我的后端是用PHP编写的: 我基本上通过以下方式访问这两个变量:

$fileName = $_FILES['file']['name']; // value = fileName.csv
$country = $_POST['country']; // value = CZE

所以看我的后端获取所有需要的信息,但是我无法用$file = fopen($fileName,"r");来打开文件 我该如何访问这个文件呢?或者如何将其上传到服务器上以便在之后使用?

1 个答案:

答案 0 :(得分:1)

你必须将文件上传到某个文件夹,然后你可以访问它,

您的文件将出现在tmp目录中,所以

使用move_uploaded_files()移动文件,

<?php
    $uploads_dir = '/uploads';
    if(move_uploaded_file($_FILES["file"]["tmp_name"],
  "$uploads_dir/".$_FILES["file"]["file_name"])){
         echo "file uploaded";
    }
?>