文件路径规范 PHP/HTML 文件上传?
File Path Specification PHP/HTML file upload?
我写了一个 php 文件来上传 .txt 文件。我对此很陌生,所以请耐心等待。
所以我将从问题开始,基本上我得到的输出是:“系统找不到指定的路径。”
事实:
我通过 ftp 管理我的 wwwroot 文件,因为我正在为我的网页使用商业主机。
我的代码:
<?php
if(isset($_FILES['notes'])){
$errors= array();
$file_name = $_FILES['notes']['name'];
$file_size =$_FILES['notes']['size'];
$file_tmp =$_FILES['notes']['tmp_name'];
$file_type=$_FILES['notes']['type'];
$file_ext=strtolower(end(explode('.',$_FILES['notes']['name'])));
$extensions = array("txt");
if(in_array($file_ext,$extensions )=== false){
$errors[]="extension not allowed, please choose a txt file.";
}
if($file_size > 5097152){
$errors[]='File size must be exactly 5 MB !';
}
if(empty($errors)==true){
move_uploaded_file($file_tmp,"/uploads".$file_name);
echo "Successful Upload, Thanks !!";
}else{
print_r($errors);
}
}
?>
我首先尝试了 /wwwroot/uploads(没有用)现在我只尝试了 /uploads。
我希望我给你的信息量是正确的。
非常感谢您的宝贵时间!
-M
好的,尝试更改此行:
move_uploaded_file($file_tmp,"/uploads".$file_name);
为此:
move_uploaded_file($file_tmp,"uploads/".$file_name);
编辑:
好的,由于更改了上述文件路径错误,可能是文件本身有问题。
尝试改变
$file_name = $_FILES['notes']['name'];
到
$file_name = basename($_FILES['notes']['name']);
编辑:如果这不起作用,请注意另一重要事项:
您需要将要上传的目录的所有权设置为 "apache"(假设您使用的是 apache 服务器),以便它能够接受从网络上传到该文件夹.
这将是这样的:
chown apache:apache uploads -R
然后设置权限为775
--
如果您不在 Linux 系统上,而只是在 Windows 设备上的开发服务器上工作,则没有必要。
有关更多错误信息,请将其放在代码的顶部:
error_reporting(E_ALL);
ini_set('display_errors', '1');
如果您的 php 文件与 uploads 文件夹位于同一文件夹中,请将文件的目标位置从 /uploads
更改为 uploads/
.如果没有,您必须使用绝对路径插入 uploads 文件夹的路径或使用 ../
将文件定向到正确的路径。
我写了一个 php 文件来上传 .txt 文件。我对此很陌生,所以请耐心等待。
所以我将从问题开始,基本上我得到的输出是:“系统找不到指定的路径。”
事实:
我通过 ftp 管理我的 wwwroot 文件,因为我正在为我的网页使用商业主机。
我的代码:
<?php
if(isset($_FILES['notes'])){
$errors= array();
$file_name = $_FILES['notes']['name'];
$file_size =$_FILES['notes']['size'];
$file_tmp =$_FILES['notes']['tmp_name'];
$file_type=$_FILES['notes']['type'];
$file_ext=strtolower(end(explode('.',$_FILES['notes']['name'])));
$extensions = array("txt");
if(in_array($file_ext,$extensions )=== false){
$errors[]="extension not allowed, please choose a txt file.";
}
if($file_size > 5097152){
$errors[]='File size must be exactly 5 MB !';
}
if(empty($errors)==true){
move_uploaded_file($file_tmp,"/uploads".$file_name);
echo "Successful Upload, Thanks !!";
}else{
print_r($errors);
}
}
?>
我首先尝试了 /wwwroot/uploads(没有用)现在我只尝试了 /uploads。
我希望我给你的信息量是正确的。
非常感谢您的宝贵时间!
-M
好的,尝试更改此行:
move_uploaded_file($file_tmp,"/uploads".$file_name);
为此:
move_uploaded_file($file_tmp,"uploads/".$file_name);
编辑:
好的,由于更改了上述文件路径错误,可能是文件本身有问题。
尝试改变
$file_name = $_FILES['notes']['name'];
到
$file_name = basename($_FILES['notes']['name']);
编辑:如果这不起作用,请注意另一重要事项:
您需要将要上传的目录的所有权设置为 "apache"(假设您使用的是 apache 服务器),以便它能够接受从网络上传到该文件夹.
这将是这样的:
chown apache:apache uploads -R
然后设置权限为775
-- 如果您不在 Linux 系统上,而只是在 Windows 设备上的开发服务器上工作,则没有必要。
有关更多错误信息,请将其放在代码的顶部:
error_reporting(E_ALL);
ini_set('display_errors', '1');
如果您的 php 文件与 uploads 文件夹位于同一文件夹中,请将文件的目标位置从 /uploads
更改为 uploads/
.如果没有,您必须使用绝对路径插入 uploads 文件夹的路径或使用 ../
将文件定向到正确的路径。