PHP通过发布表单上传图像

PHP通过发布表单上传图像,php,Php,我正试图通过以下代码上传图像。 虽然我的if条件正在执行,如下所示,但图像并没有移动到我指定的路径。我的代码如下。 这是我的html代码 <form enctype="multipart/form-data" action="catcher.php" method="POST"> Send this file: <input name="userfile" type="file" /> <input type="submit" value="Send Fil

我正试图通过以下代码上传图像。 虽然我的if条件正在执行,如下所示,但图像并没有移动到我指定的路径。我的代码如下。 这是我的html代码

<form enctype="multipart/form-data" action="catcher.php" method="POST">
Send this file: <input name="userfile" type="file" />
    <input type="submit" value="Send File" />
</form>

发送此文件:
这是我的php代码

<?php
$uploaddir = '/xampp/project/';
echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir)) {
    echo "File is valid, and was successfully uploaded.\n";
} else {
    echo "Possible file upload attack!\n";
}

echo 'Here is some more debugging info:';
print_r($_FILES);

print "</pre>";

?>

有人能指出我的代码有什么问题吗?我的意思是,为什么我试图上传的图像没有移动到指定的路径,

要求第二个参数是目标文件,而不是目录

你可以做:

 $folder =  "../images/stories/";
$result =   move_uploaded_file($_FILES['excel']['tmp_name'], $folder.$filename);
但是多个用户很有可能尝试上传同名文件,所以我强烈建议处理这种可能性

function upload($name,$tmp_name){   

$fileextarr=explode('.',$name);
$fileextarr[0];
$fileext=$fileextarr[count($fileextarr)-1];
$fpath = "../images/stories/lab_excel/";
$filename = ereg_replace(" ","_",$fileextarr[0]).'.'.$fileext;


//You can use restriction on file extensions also. (not necessary)

if($fileext=="xls" || $fileext=="xlsx" || $fileext=="doc"|| $fileext=="docx" || $fileext=="jpeg" || $fileext=="png" || $fileext=="gif" || $fileext=="tiff" || $fileext=="bmp" || $fileext=="jpg")
{
    $uploadedfile = $filename;

}

//Here is the use of destination path:



 $folder =  "../images/stories/lab_excel/";
$result =   move_uploaded_file($_FILES['excel']['tmp_name'], $folder.$filename);

/*echo $folder.$_FILES['excel']['name'];
die();*/

if($result){
$msg="File Uploaded Successfully";
    return $folder.$filename;
}
else
{
    return false;
}
指定目标文件夹名称。(在上面的代码中,$folder是目标路径变量) 您可以查看此功能的详细信息:


}

您忘记了
$uploaddir
中的目标文件名。为什么要在if语句之前回显pre?您指定的路径是绝对路径-它希望根目录中存在一个名为
xampp
的目录,我猜它不存在。请记住,您的PHP脚本很可能有其所在目录的工作目录,请尝试指定相对路径-您可以从删除前导的
/
开始。您还需要指定一个文件名,而不仅仅是一个目录路径。我也使用了该文件名,但仍在使用@randle,我也尝试过类似$uploaddir='/xampp/project/'$uploadfile=$uploaddir。基本名称($_文件['userfile']['name']);回声';如果(move_upload_file($_FILES['userfile']['tmp_name'],$uploaddir)),你还需要检查它的图像,否则你会发现hackedi刚刚发现我刚才使用的目录名有问题。/i读取完整路径,然后工作正常,,,
function upload($name,$tmp_name){   

$fileextarr=explode('.',$name);
$fileextarr[0];
$fileext=$fileextarr[count($fileextarr)-1];
$fpath = "../images/stories/lab_excel/";
$filename = ereg_replace(" ","_",$fileextarr[0]).'.'.$fileext;


//You can use restriction on file extensions also. (not necessary)

if($fileext=="xls" || $fileext=="xlsx" || $fileext=="doc"|| $fileext=="docx" || $fileext=="jpeg" || $fileext=="png" || $fileext=="gif" || $fileext=="tiff" || $fileext=="bmp" || $fileext=="jpg")
{
    $uploadedfile = $filename;

}

//Here is the use of destination path:



 $folder =  "../images/stories/lab_excel/";
$result =   move_uploaded_file($_FILES['excel']['tmp_name'], $folder.$filename);

/*echo $folder.$_FILES['excel']['name'];
die();*/

if($result){
$msg="File Uploaded Successfully";
    return $folder.$filename;
}
else
{
    return false;
}