2015-06-24 4 views
-1

У меня есть код загрузки файла. Я сталкиваюсь с некоторыми проблемами. Я хочу сохранить путь к файлу в базе данных, который загружен пользователем, но мне не удалось. Не могли бы вы мне помочь.Как сохранить путь к файлу с помощью загрузки файла PHP

Вот мой код

<?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"; 
    } 
} 
?> 
+0

Вы должны сначала загрузить файл, а затем сохранить имя в базе данных. – AnkiiG

+0

@AnkiiGangrade Как я могу это сделать, может дать мне подсказку, написав какой-то код? – sunny

ответ

1

Вы должны попробовать что-то вроде этого:

<?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"; 
    } 
} 
?> 
+0

Спасибо Ankii Gangrade – sunny

+0

:) отлично, это сработало для вас. @sunny – AnkiiG

+0

yes Ankii Свои работы для меня :) – sunny

0

Обычно, когда я это делаю, я просто хранить точное имя файла (имя данный файлу после его перемещения в нужное место) в базу данных. Затем, когда я хочу получить, я просто добавляю имя файла в путь к файлу.

Как:

<img src = "/user_data/<?php echo ($file_name); ?>.png"; 

Причина:

  1. Сохранение слэша и расширений могут сделать грязные базы данных. (Личные предпочтения).

  2. По умолчанию папка user_data всегда будет доступна, поэтому почему бы не ссылаться на нее напрямую, чтобы сделать мои коды более удобочитаемыми.

Смежные вопросы