php:目录名+;文件名

php:目录名+;文件名,php,file,submit,Php,File,Submit,我正在制作一个用PHP上传文件的表单。这些是我的投入: $file_name = filter_input(INPUT_POST, 'file_name'); $file = filter_input(INPUT_POST, 'file'); $file_date = filter_input(INPUT_POST, 'premiere_date'); $file_director = filter_input(INPUT_POST, 'director_name'); 这就是我不知道

我正在制作一个用PHP上传文件的表单。这些是我的投入:

 $file_name = filter_input(INPUT_POST, 'file_name');
 $file = filter_input(INPUT_POST, 'file');
 $file_date = filter_input(INPUT_POST, 'premiere_date');
 $file_director = filter_input(INPUT_POST, 'director_name');
这就是我不知道我做错了什么:

if ((filter_input(INPUT_POST, 'submit'))) { //if submit button is clicked
      $target_dir = "uploads/";
    $target_file = $target_dir . basename($_FILES["file"]["file_name"]);
     move_uploaded_file($_FILES["file"]["tmp_name"], $target_file);    
     echo $target_file;
}
这是html

文件名:
所以,当我回显$target_文件时,我希望它是本例中的路径uploads/nameoffile.pdf,但它只显示为uploads/So$target_dir,我使用的basename函数对吗??我查过W3学校,对我来说似乎是对的,但肯定是出了什么问题


谢谢大家

您输入的文件标记与名称字段关联为'file'

Instead of using $_FILES["file"]["file_name"] use this $_FILES["file"]["file"]
希望它对你有用。

改变
$target\u file=$target\u dir。基本名称($_文件[“文件”][“文件名])

$target\u file=$target\u dir。基本名称($_文件[“文件”][“名称])


应该可以工作。

$\u文件是一个关联数组,包含:

Array ( [name] => 
 [type] => some value 
[tmp_name] => some value
error] => some value 
[size] => some value
)
使用
var\u dump($\u FILES)
$\u FILES[“file”][“name”]]更改为
$\u FILES[“file”][“name”]
使用
var\u dump($\u FILES)
可以查看整个PHP
$\u文件
关联数组。如您所见:

array(1) { 
    ["file"]=> array(5) { 
        ["name"]=> string(14) "plugin wp.docx" 
        ["type"]=> string(71) "application/vnd.openxmlformats-officedocument.wordprocessingml.document" 
        ["tmp_name"]=> string(18) "/var/tmp/phpcoayaU" 
        ["error"]=> int(0) 
        ["size"]=> int(262453) 
    } 
}
$\u FILES
包含一个名为“file”的
关联数组,该数组有5个索引:
名称
类型
tmp\u名称
错误
大小

您正在分配:

$target_file = $target_dir . basename($_FILES["file"]["file_name"]);
参考上面的对象,这是不正确的,因为
[“文件名”]
不是
文件的一部分。在查看调试信息时,解决方案应该是显而易见的,只需将
[“file_name”]
更改为
[“name”]


关于PHP
var_dump()
的一些信息,因为您似乎不知道这个函数。

如果调用
var_dump(basename($\u FILES[“file”][“file_name”]),您会得到什么?关于double()的问题很好,这是一个错误,但是它不会改变结果,但是谢谢!!使用basename之前的var_dump,我得到字符串(0)”,这是什么意思?我是一个非常新的编码,所以一切似乎都很难理解!请也更新html。删除
basename
调用,只需进行
var\u转储($\u FILES[“file”][“file\u name”])
-输出什么?谢谢Chayan!!!它确实有用!但是你能给我解释一下。。。为什么?因为我没有任何“名称”,所以我的db:S中的列称为file\u name
$target_file = $target_dir . basename($_FILES["file"]["file_name"]);
 $target_file = $target_dir . basename($_FILES["file"]["name"]);