为什么我的文件加载不能在PHP中工作?

为什么我的文件加载不能在PHP中工作?

问题描述:

我看不出为什么这段代码不工作。 load_docs_2.php的输出为: Array()错误的文件类型。这是在XAMPP上运行的。为什么我的文件加载不能在PHP中工作?

的HTML是:

<form id="import_form" method="post" action="load_docs_2.php" enctype="multipart/form-data"> 
    <label for "importfile">Import PDF File</label><br> 
    <input id="import_name" name="load" type="file" value="Upload File"><br><br> 
    <input id="import" name="import" type="submit" value="Import"> 
</form> 

load_docs_2.php是:

<?php 

// Capture file data 

print_r($_FILES); 

$loadname = $_FILES["load"]["name"]; // name contains original name 
$loadname_temp = $_FILES["load"]["tmp_name"]; // tmp_name contains the temporary file name 

// Check file meta data 
$import_size = $_FILES["load"]["size"]; 
$import_type = $_FILES["load"]["type"]; 

// Setting target folder 
$target_dir = "./Staff Docs"; 
$target_file = $target_dir . $loadname; // Create target file path 

// Move to import folder 

$allowed = array('pdf'); 
$ext = pathinfo($loadname, PATHINFO_EXTENSION); 

if (!in_array($ext,$allowed)) 
{ 
    echo 'Incorrect file type'; 
}  
else 
{ 
    move_uploaded_file($loadname_temp, $target_file); 
} 

?> 

为什么没有在文件加载工作?

+0

可以请你最后一个问题结束了,我不得不回溯一路那里的标题,我真的不同意开始题目的问题,但不要在实际问题中重复。 IMO最好在代码之后进行最后的总结。 – blamb

+0

$ target_dir =“./Staff Docs /”;目标文件夹是工作人员文档意味着您必须以正斜杠结尾 – JYoThI

+0

是否有任何错误显示? – JYoThI

您可以更改此代码

$target_dir = "Staff Docs/"; 

现在它工作正常

+0

职员文档与源代码文件位于同一个目录中。 – Trevor

+0

问题是load_docs_2.php中的print_r($ _ FILES)语句正在输出结果:Array()。即文件数据没有被传递到load_docs_2.php – Trevor

+0

它在我的xampp中正常工作 –

你的目标文件是不正确的。目标目录和文件之间没有目录分隔符,所以结果本质上是错误的。

<?php 

    // Capture file data 

    print_r($_FILES); 

    $loadname  = $_FILES["load"]["name"]; // name contains original name 
    $loadname_temp = $_FILES["load"]["tmp_name"]; // tmp_name contains the temporary file name 

    // Check file meta data 
    $import_size = $_FILES["load"]["size"]; 
    $import_type = $_FILES["load"]["type"]; 

    // Setting target folder 
    //$target_dir = "./Staff Docs"; //<== THIS IS WHERE THE PROBLEM WAS... 
    $target_dir  = "./Staff Docs/"; //<== ADD A DIRECTORY SEPARARATOR BEFORE CONCATENATING WITH $loadname... 
    $target_file = $target_dir . $loadname; // Create target file path 

    // Move to import folder 
    $allowed  = array('pdf'); 
    $ext = pathinfo($loadname, PATHINFO_EXTENSION); 

    if (!in_array($ext,$allowed)){ 
     echo 'Incorrect file type'; 
    }else{ 
     move_uploaded_file($loadname_temp, $target_file); 
    } 

或者,您可以在描述$ TARGET_FILE像这样的线直接添加目录分隔符:

<?php 

    // Capture file data 

    print_r($_FILES); 

    $loadname  = $_FILES["load"]["name"]; // name contains original name 
    $loadname_temp = $_FILES["load"]["tmp_name"]; // tmp_name contains the temporary file name 

    // Check file meta data 
    $import_size = $_FILES["load"]["size"]; 
    $import_type = $_FILES["load"]["type"]; 

    // Setting target folder 
    $target_dir  = "./Staff Docs"; //<== THIS IS WHERE THE PROBLEM WAS... 
    $target_file = $target_dir . DIRECTORY_SEPARATOR . $loadname; // Create target file path 

    // Move to import folder 
    $allowed  = array('pdf'); 
    $ext = pathinfo($loadname, PATHINFO_EXTENSION); 

    if (!in_array($ext,$allowed)){ 
     echo 'Incorrect file type'; 
    }else{ 
     move_uploaded_file($loadname_temp, $target_file); 
    }