即使有正确的引用,$ _POST也是空的

时间:2016-01-11 02:06:14

标签: php post

显然我说它有一个正确的名字'属性引用但显然无法正常工作。

HTML:

<form action="scripts/upload.php" method="POST" enctype="multipart/form-data">
        Select Content to Upload:
        <br>
        <input type="file" name="filesToUpload[]" multiple="multiple" required>
        <input type="submit" value="Upload Content">
    </form>

PHP:

var_dump($_POST); print "<br>"; var_dump($_FILES); print "<br>";print "<br>";
if (isset($_POST['filesToUpload'])) {
    print $_POST['filesToUpload'];
}   else {print "POST not set";}

输出:

array(0) { }
array(1) { ["filesToUpload"]=> array(5) { ["name"]=> array(1) { [0]=> string(12) "Chimera.jpeg" } ["type"]=> array(1) { [0]=> string(10) "image/jpeg" } ["tmp_name"]=> array(1) { [0]=> string(14) "/tmp/phptdEVQ9" } ["error"]=> array(1) { [0]=> int(0) } ["size"]=> array(1) { [0]=> int(28671) } } }
array(0) { }
POST not set

所以$ _FILES已初始化,但为什么不是$ _POST?为什么它告诉我没有设置$ _POST数组。我知道它不是基于输出,但不应该是?我觉得我犯了一些愚蠢的语法错误。

3 个答案:

答案 0 :(得分:3)

你正在寻找错误的超级全球化。您上传了一个file,因此可以在$_FILES超级全局中访问,您已经var_dump($_FILES)了。

任何其他input都会添加到您的$_POST。您将能够通过$_FILES数组访问文件:

foreach($_FILES['filesToUpload'] as $uploaded_file){
    print_r($uploaded_file);
    // do what you need to do with the files.
}

答案 1 :(得分:2)

所有文件都存在于$_FILES超级全局内,而不是$_POST

执行$_FILES的var_dump以查看上传的内容。

答案 2 :(得分:1)

以下是一个例子:

<?php
require_once 'functions.php';


if(isset($_FILES['filesToUpload']['tmp_name'], $_POST)) {
    $files = reformat($_FILES['filesToUpload']);
    foreach ($files as $file) {
        $temp = $file['tmp_name'];
        $path = 'upload/'.$file['name'];//replace
        if(move_uploaded_file($temp, $path)){
            echo 'success upload';
        }else{
            echo 'failed to upload';
        }
    }
}else{
    echo 'file not uploaded';
}

?>

上传多个文件时,您需要循环浏览文件:

<?php

function reformat(&$file_post) {

    $file_ary = array();
    $file_count = count($file_post['name']);
    $file_keys = array_keys($file_post);

    for ($i=0; $i<$file_count; $i++) {
        foreach ($file_keys as $key) {
            $file_ary[$i][$key] = $file_post[$key][$i];
        }
    }

    return $file_ary;
}

?>

reformat()旨在重新组织数据结构