如何将文件视为普通数组

时间:2016-12-06 07:14:31

标签: php arrays

我的主要问题是我有两个不同的文件上传链接,两者都用于不同目的。例如:a)是许可证b)是照片所以我需要在不同的位置上传。所以我想要的是能够将文件属性作为数字数组而不是关联数组来处理。我也愿意就如何区分这两个文件提出建议。

以下是输入代码示例:

<label for="file-upload" class="custom-file-upload">
    <i class="fa fa-cloud-upload">
    </i>Upload License
</label>
<input id="file-upload" name="files[]" type="file">
<label for="file-upload" class="custom-file-upload">
    <i class="fa fa-cloud-upload">
    </i>Upload Photo
</label>
<input id="file-upload" name="files[]" type="file">

这是上传脚本(注意 - 我也尝试过使用array_values())

<?php
$name       = $_POST['name'];
$email      = $_POST['email'];
$tmpname    = array_values($_FILES['files']['tmp_name']);
$filename   = array_values($_FILES['files']['name']);
$filesize   = array_values($_FILES['files']['size']);
$filetype   = array_values($_FILES['files']['type']);
$date12     = date('Y-m-d');
//for photo
$file_name2 = $filename[0];
$ext2       = pathinfo($file_name2, PATHINFO_EXTENSION);
$file_name22= $name.".".$ext2;
$file_size2 = $filesize[0];
$file_tmp2  = $tmpname[0];
$file_type2 = $filetype[0];
$extensions = array("jpg","jpeg","png","pdf","zip","rar");
$type        = "photo";
$desired_dir = "user_data";

if(in_array($ext2,$extensions ) === false)
{
    $errors2 = "Extension not allowed!";
}
else
{
    //Added file size limit
    if($file_size2 > 2097152)
    {
        $errors2 = 'File size must be less than 2 MB';
    }
    if(empty($errors2) == true)
    {
        // Inserting info into database for easy retrieval
        $query1 = $this->pdo->prepare("
            INSERT into upload_data (NAME,EMAIL,FILE_NAME,FILE_SIZE,FILE_TYPE,date1,file_ext,type)
            VALUES('$name','$email','$file_name22','$file_size2','$file_type2','$date12','$ext2','$type')
        ");
        $query1->execute();

        if(is_dir($desired_dir) == false)
        {
            mkdir("$desired_dir", 0700);        // Create directory if it does not exist
        }
        if(is_dir("$desired_dir/".$file_name22) == false)
        {
            move_uploaded_file($file_tmp,"user_data/".$type.$file_name22);
        }
        else
        {
            //rename the file if another one exist
            $new_dir = "user_data/".$file_name22.time();
            rename($file_tmp2,$new_dir) ;
        }
        echo "
        <script>
        Materialize.toast('Successfully Uploaded!', 8000)
        </script>";
    }
    else
    {
        echo "
        <script>
        Materialize.toast($errors, 8000)
        </script>";
    }
}

谢谢

1 个答案:

答案 0 :(得分:0)

为了上传表单中的文件,您的表单需要enctype =&#34; multipart / form-data&#34;。 以不同的方式命名不同的输入,例如许可证和照片。然后你可以使用$ _FILES [&#39; license&#39;]和$ _FILES [&#39; photo&#39;]访问php中的文件。