如何使用PHP文件上载存储文件路径

如何使用PHP文件上载存储文件路径,php,mysql,file-upload,filepath,Php,Mysql,File Upload,Filepath,我有一个文件上传代码。我面临一些问题。我想在用户上传的数据库中保存文件路径,但我在其中失败。你能帮帮我吗 这是我的密码 <?php $host="localhost"; // Host name $username="root"; // Mysql username $password=""; // Mysql password $db_name="test123"; // Database name //$tbl_name="members"; // Table name $c

我有一个文件上传代码。我面临一些问题。我想在用户上传的数据库中保存文件路径,但我在其中失败。你能帮帮我吗

这是我的密码

<?php
$host="localhost"; // Host name 
$username="root"; // Mysql username 
$password=""; // Mysql password 
$db_name="test123"; // Database name 
//$tbl_name="members"; // Table 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];
        $file_path=$_FILES['files']['path'][$key];  
        if($file_size > 2097152){
            $errors[]='File size must be less than 2 MB';
        }       
        $query="INSERT into upload(`FILE_NAME`,`FILE_SIZE`,`FILE_TYPE`,`FILE_PATH`) VALUES('$file_name','$file_size','$file_type', '$file_path'); ";
$desired_dir="user_data";
        //$desired_dir=$options['upload_dir']."user_data";
        if(empty($errors)==true){
            if(is_dir($desired_dir)==false){
                mkdir("$desired_dir", 755);     // 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";
    }
}
?>

您应该尝试以下方法:

<?php
$host="localhost"; // Host name
$username="root"; // Mysql username
$password="root"; // Mysql password
$db_name="test"; // Database name
//$tbl_name="members"; // Table 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];
        $file_path=$_FILES['files']['path'][$key];
        if($file_size > 2097152){
            $errors[]='File size must be less than 2 MB';
        }

        //$desired_dir=$options['upload_dir']."user_data";
        $desired_dir="user_data";
        if(empty($errors)==true)
        {
            if(is_dir($desired_dir)==false){
                mkdir("$desired_dir", 755);     // Create directory if it does not exist
            }

            $file_path_name = "$desired_dir/".$file_name;

            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) ;
            }

            $query="INSERT into upload(`FILE_NAME`,`FILE_SIZE`,`FILE_TYPE`,`FILE_PATH`) VALUES('$file_name','$file_size','$file_type', '$file_path_name'); ";
            mysql_query($query);
        }else{
            print_r($errors);
        }
    }
    if(empty($error)){
        echo "Success";
    }
}
?>

通常在执行此操作时,我只会将确切的文件名(文件移动到所需位置后指定的名称)存储到数据库中。然后,当我想要检索时,我只是将文件名附加到文件路径

比如:

.png”;
原因:

  • 存储斜杠和扩展可能会使数据库混乱。(个人偏好

  • 默认情况下,user_data文件夹总是可用的,所以为什么不直接引用它以使我的代码更可读呢


  • 你应该先上传文件,然后将名称保存在数据库中。@AnkiiGangrade我该怎么做?你可以写一些代码给我一个提示吗?不可能知道你改变了什么。如果你看代码,你就会知道我改变了什么。@Ja͢ck这是一个令人难过的借口,你可以在答案中提及你改变了什么,而不是让前来的其他人剖析您的代码。
    <img src = "/user_data/<?php echo ($file_name); ?>.png";