如何从多部分/表单数据 [ PHP ] 访问文件


How to access file from multipart/form-data [ PHP ]

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

前端部分如下所示:

$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编写的:我基本上通过以下方式访问这 2 个变体:

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

所以看起来我的后端获得了所有需要的信息,但我无法使用$file = fopen($fileName,"r");打开文件我如何访问这个文件的人?或者我怎样才能把它上传到服务器上,以便以后使用它?

您必须

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

您的文件将出现在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";
    }
?>