【问题标题】:not able to upload files in specific directory无法上传特定目录中的文件
【发布时间】:2014-07-07 09:22:39
【问题描述】:

我已经使用 php 制作了一个小型图像上传系统,它工作正常,但现在当我尝试在特定文件夹中上传图片时,它会出错并仅在根文件夹中上传图像。

php代码是:

 <?php
    //checking if the user already has a directory or not.
    if($r['directory']==0){
        $query= "UPDATE user SET directory='1' where id='".$_SESSION['sess_id']."'";
        mysqli_query($dbconn,$query);
        $path='../akshay/work/'.$r['username'];
        mkdir($path) or die("unable to create folder");
    } if(isset($_POST['submit'])&& $r['directory']==1){
    //uploading users work.
        $path='../akshay/work/'.$r['username'];
        $name=$_FILES['work']['name'];
        $size=$_FILES['work']['size'];
        $type=$_FILES['work']['type'];
        $tmp_name=$_FILES['work']['tmp_name'];
        $extension=strtolower(substr($name,strpos($name,'.') + 1));
        //checking if the user has selected a file or not.
        if(isset($name)){
            if(!empty($name)){
            //checking if the uploaded file is an image or not.
                if($extension=='jpg'||$extension=='jpeg'&& $type=='image/jpeg'){
                    $location=$path;           
                    if(move_uploaded_file($tmp_name,$location.$name)){           
                        echo'uploaded succesfully';
                    }else{
                        echo'<p style=color:red;>please choose a file</p>';
                    }
                } else {
                 echo'<p style=color:red;>format of the file must be jpg/jpeg</p>';
                }
            }       
        }
    }
?>

我认为问题出在 move_uploaded_file() 函数中。请帮我解决这个问题,请告诉我任何其他方法(如果有的话)来做到这一点。我可以使用第一次检查创建目录。

错误是“未定义的变量:dir_name”并打印消息“上传成功”。

我对代码进行了一些编辑,现在我可以在指定位置创建一个目录,但无法在该文件夹中上传图像,而是将图像上传到“工作”文件夹中,并将用户名附加到名称后面图片。

请帮忙!!!

【问题讨论】:

    标签: php file upload directory


    【解决方案1】:

    else if 部分代码中,$dir_name 未定义。

    所以请更新您的代码并添加以下内容:

    else if(isset($_POST['submit'])&& $r['directory']==1){
        $dir_name = $r['username'];
    // your code continue..
    

    此外..您使用的代码不好。好像if 条件为真,那么else if 部分将不会被执行。所以更新你的代码如下:

    <?php
    //checking if the user already has a directory or not.
    if($r['directory']==0){
    $query= "UPDATE user SET directory='1' where id='".$_SESSION['sess_id']."'";
    mysqli_query($dbconn,$query);
    $dir_name=$r['username'];
    $r['directory']=1;
    mkdir($dir_name);
    }
    if(isset($_POST['submit'])&& $r['directory']==1){
        $dir_name = $r['username'];
    //uploading users work.
    $name=$_FILES['work']['name'];
    $size=$_FILES['work']['size'];
    $type=$_FILES['work']['type'];
    $tmp_name=$_FILES['work']['tmp_name'];
    $extension=strtolower(substr($name,strpos($name,'.') + 1));
    //checking if the user has selected a file or not.
    if(isset($name)){
        if(!empty($name)){
            //checking if the uploaded file is an image or not.
             if($extension=='jpg'||$extension=='jpeg'&& $type=='image/jpeg'){
    
                 if(move_uploaded_file($tmp_name,$dir_name.$name)){
                     echo'uploaded succesfully';
                 }else{
                    echo'<p style=color:red;>please choose a file</p>';
                 }
             }
            else
            {
                 echo'<p style=color:red;>format of the file must be jpg/jpeg</p>';
            }
        }
    
    }
    
    }
    ?>
    

    【讨论】:

    • 感谢现在没有显示错误,但问题仍然存在,它正在将文件上传到根文件夹,现在附加了目录名称。
    【解决方案2】:

    使用此代码..

    $directory ="../images/".$file_name;
    
    move_uploaded_file($temp_name, $directory);
    

    我认为这对你有用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-03
      • 2023-03-30
      • 2016-04-22
      • 1970-01-01
      • 2015-12-06
      • 1970-01-01
      相关资源
      最近更新 更多