PHP中的文件上传和下载

PHP中的文件上传和下载,php,Php,下面的代码有问题吗?因为我可以毫无错误地单击按钮,但文件不会保存到“public\u html/resume/” $uploadOk=true; 如果(isset($\u文件)){ $folder_dir=“public_html/resume/”; $base=basename($_文件['resume']['name']); $resumeFileType=pathinfo($base,pathinfo_扩展名); $file=uniqid()。“..$resumeFileType; $fi

下面的代码有问题吗?因为我可以毫无错误地单击按钮,但文件不会保存到
“public\u html/resume/”

$uploadOk=true;
如果(isset($\u文件)){
$folder_dir=“public_html/resume/”;
$base=basename($_文件['resume']['name']);
$resumeFileType=pathinfo($base,pathinfo_扩展名);
$file=uniqid()。“..$resumeFileType;
$filename=$folder_dir.$file;
如果(文件u存在($\u文件['resume']['tmp\u name']){
如果($resumeFileType==“pdf”){
如果($_FILES['resume']['size']<500000){//文件大小小于5MB
移动上传的文件($文件[“恢复”][“tmp文件名”],$文件名);
}否则{
$\u会话['uploadError']=“大小错误。允许的最大大小:5MB”;
标题(“位置:editprofile.php”);
退出();
}
}否则{
$\u会话['uploadError']=“格式错误,仅允许PDF”;
标题(“位置:editprofile.php”);
退出();

不幸的是,PHP代码的每一行都应该改进

错误的原因是
/public\u hml/
不是一个绝对的文件路径,因此PHP将其解释为相对路径。并且查找几乎肯定无效的
/public\u html/resume/

我已经为你修复了几乎所有的东西,如下所示

$uploadOk = false; // Always assume false until proven ok.  

if(!empty($_FILES['resume'])) {
   // Check errors    
   if($_FILES['resume']['error'] === 0){

        $folder_dir = $_SERVER['DOCUMENT_ROOT']."/resume/"; // use absolute path.

    // $base = basename($_FILES['resume']['name']); //worthless.
    // $resumeFileType = pathinfo($base, PATHINFO_EXTENSION); 

        $finfo = new finfo();
        $fileMimeType = $finfo->file($_FILES['resume']['tmp_name'], FILEINFO_MIME_TYPE);
        if(strtolower($fileMimeType) !== 'applicaton/pdf'){
               $_SESSION['uploadError'] = "Wrong Format. Only PDF Allowed";
                header("Location: edit-profile.php");
                exit();
        }
        $file = uniqid("",true) . ".PDF";    // make sure unique is unique. 

        $filename = $folder_dir .$file;  

    //if(file_exists($_FILES['resume']['tmp_name'])) {  

    //   if($resumeFileType == "pdf")  {//worthless.

       if($_FILES['resume']['size'] > 500000) { // File size is less than 5MB
            $_SESSION['uploadError'] = "Wrong Size. Max Size Allowed : 5MB";
            header("Location: edit-profile.php");
            exit();
       } 

       move_uploaded_file($_FILES["resume"]["tmp_name"], $filename);
   }
   else {
     //There were file upload errors. Handle here.
    }
}
来源

您检查了错误日志了吗?不用说您丢失了
}
在代码中,但也要检查您是否有权访问
public\u html/resume
。这更像是一个权限问题。您做了什么调试?是
$file
您期望的吗?是
$filename
您期望的吗?如果(文件存在($\u FILES['resume']['tmp\u name']),您是否进入
){
check?当路径文件夹为空时,单击“上载”时未发现错误消息添加错误处理:
$uploadOk = false; // Always assume false until proven ok.  

if(!empty($_FILES['resume'])) {
   // Check errors    
   if($_FILES['resume']['error'] === 0){

        $folder_dir = $_SERVER['DOCUMENT_ROOT']."/resume/"; // use absolute path.

    // $base = basename($_FILES['resume']['name']); //worthless.
    // $resumeFileType = pathinfo($base, PATHINFO_EXTENSION); 

        $finfo = new finfo();
        $fileMimeType = $finfo->file($_FILES['resume']['tmp_name'], FILEINFO_MIME_TYPE);
        if(strtolower($fileMimeType) !== 'applicaton/pdf'){
               $_SESSION['uploadError'] = "Wrong Format. Only PDF Allowed";
                header("Location: edit-profile.php");
                exit();
        }
        $file = uniqid("",true) . ".PDF";    // make sure unique is unique. 

        $filename = $folder_dir .$file;  

    //if(file_exists($_FILES['resume']['tmp_name'])) {  

    //   if($resumeFileType == "pdf")  {//worthless.

       if($_FILES['resume']['size'] > 500000) { // File size is less than 5MB
            $_SESSION['uploadError'] = "Wrong Size. Max Size Allowed : 5MB";
            header("Location: edit-profile.php");
            exit();
       } 

       move_uploaded_file($_FILES["resume"]["tmp_name"], $filename);
   }
   else {
     //There were file upload errors. Handle here.
    }
}