为什么我的文件加载不能在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);
}
?>
为什么没有在文件加载工作?
答
你的目标文件是不正确的。目标目录和文件之间没有目录分隔符,所以结果本质上是错误的。
<?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);
}
可以请你最后一个问题结束了,我不得不回溯一路那里的标题,我真的不同意开始题目的问题,但不要在实际问题中重复。 IMO最好在代码之后进行最后的总结。 – blamb
$ target_dir =“./Staff Docs /”;目标文件夹是工作人员文档意味着您必须以正斜杠结尾 – JYoThI
是否有任何错误显示? – JYoThI