【问题标题】:How to set a specific path while file uploading using php如何在使用php上传文件时设置特定路径
【发布时间】:2015-09-07 15:41:54
【问题描述】:

我是 PHP 新手。我有一个文件上传代码并将其保存在 mysql 中。我想在上传文件时设置特定路径。例如我设置路径

C:\xampp\htdocs

当我点击上传按钮时,我的这个目录就会打开。

这是我的代码

  <?php
    $host="localhost"; // Host name 
    $username="root"; // Mysql username 
    $password=""; // Mysql password 
    $db_name="test123"; // Database name 
   $con=mysql_connect("localhost","root","");
    if(! $con)
    {
    die('Connection Failed'.mysql_error());
    }

    mysql_select_db("test123",$con);

    if(isset($_FILES['files'])){
        $errors= array();
        foreach($_FILES['files']['tmp_name'] as $key => $tmp_name ){
            $file_name = $key.$_FILES['files']['name'][$key];
            $file_size =$_FILES['files']['size'][$key];
            $file_tmp =$_FILES['files']['tmp_name'][$key];
            $file_type=$_FILES['files']['type'][$key];  
            if($file_size > 2097152){
                $errors[]='File size must be less than 2 MB';
            }       
            $query="INSERT into upload_data (`FILE_NAME`,`FILE_SIZE`,`FILE_TYPE`) VALUES('$file_name','$file_size','$file_type'); ";
            $desired_dir="user_data";
            if(empty($errors)==true){
                if(is_dir($desired_dir)==false){
                    mkdir("$desired_dir", 0700);        // Create directory if it does not exist
                }
                if(is_dir("$desired_dir/".$file_name)==false){
                    move_uploaded_file($file_tmp,"$desired_dir/".$file_name);
                }else{                                  // rename the file if another one exist
                    $new_dir="$desired_dir/".$file_name.time();
                     rename($file_tmp,$new_dir) ;               
                }
             mysql_query($query);           
            }else{
                    print_r($errors);
            }
        }
        if(empty($error)){
            echo "Success";
        }
    }
    ?>


    <form action="" method="POST" enctype="multipart/form-data">
        <input type="file" name="files[]" multiple/>
        <input type="submit"/>
    </form>

【问题讨论】:

  • 你有什么错误吗?
  • @AnkiiGangrade 不,我没有收到任何错误。实际上我想知道如何在上传文件时设置特定路径。
  • 您的文件上传代码是正确的,只需将权限从 700 更改为 755。我认为在您运行代码时,您已经创建了文件夹 user_data,因此为简单起见,删除或重新分配访问权限或更改文件夹名称并给出代码中的 755 权限。
  • @AnkiiGangrade 能否请您通过更改我的代码来简要解释一下。这是我对你的谦虚要求。
  • 另外testapp必须有可写权限

标签: php mysql file-upload filepath


【解决方案1】:

你可以这样做:

<?php
$host="localhost"; // Host name 
$username="root"; // Mysql username 
$password="root"; // Mysql password 
$db_name="test"; // Database name 
$con=mysql_connect("localhost","root","root");
if(! $con)
{
die('Connection Failed'.mysql_error());
}

mysql_select_db("test",$con);

if(isset($_FILES['files'])){
    $errors= array();
    foreach($_FILES['files']['tmp_name'] as $key => $tmp_name ){
        $file_name = $key.$_FILES['files']['name'][$key];
        $file_size =$_FILES['files']['size'][$key];
        $file_tmp =$_FILES['files']['tmp_name'][$key];
        $file_type=$_FILES['files']['type'][$key];  
        if($file_size > 2097152){
            $errors[]='File size must be less than 2 MB';
        }       
        $query="INSERT into upload_data (`FILE_NAME`,`FILE_SIZE`,`FILE_TYPE`) VALUES('$file_name','$file_size','$file_type'); ";
        $desired_dir="/home/test/www/uploads/user_datae";
        if(empty($errors)==true){
            if(is_dir($desired_dir)==false){
                mkdir("$desired_dir", 0755);        // Create directory if it does not exist
            }
            if(is_dir("$desired_dir/".$file_name)==false){
                move_uploaded_file($file_tmp,"$desired_dir/".$file_name);
            }else{                                  // rename the file if another one exist
                $new_dir="$desired_dir/".$file_name.time();
                 rename($file_tmp,$new_dir) ;               
            }
        mysql_query($query);           
        }else{
                print_r($errors);
        }
    }
    if(empty($error)){
        echo "Success";
    }
}
?>


<form action="" method="POST" enctype="multipart/form-data">
    <input type="file" name="files[]" multiple/>
    <input type="submit"/>
</form>

【讨论】:

  • 它的显示错误警告:mkdir(): No such file or directory in C:\xampp\htdocs\MyFirstWebsite\upload\up.php on line 28 警告:move_uploaded_file(/home/test/www /uploads/user_datae/0Log.txt):无法打开流:第 31 行的 C:\xampp\htdocs\MyFirstWebsite\upload\up.php 中没有这样的文件或目录警告:move_uploaded_file():无法移动 'C: \xampp\tmp\php8AE4.tmp' 到第 31 行 C:\xampp\htdocs\MyFirstWebsite\upload\up.php 中的 '/home/test/www/uploads/user_datae/0Log.txt'
  • 更改路径。我使用了我的系统/home/test/www/uploads/user_datae 的虚拟路径。您应该根据文件夹结构使用路径。
  • 使用C:\xampp\htdocs\MyFirstWebsite\upload\test。确保upload 具有写权限。
  • @sunny :这是你的路径问题。我在我的系统上进行了测试,上面的代码工作正常。可以告诉我MyFirstWebsite中的文件夹吗?
  • 亲爱的我的问题是,当我上传文件时,我想设置的路径每次都相同。我不想浏览 i 目录中的文件。我想在我的系统中打开文件的直接位置。例如,我的所有文件都在 C:/MyFolder/test 中。我希望每当我点击上传按钮时,我的特定路径都会打开
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多