php:目录名+;文件名
我正在制作一个用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'); 这就是我不知道
$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”]
:
关于PHPvar_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"]);