2013-08-02 2 views
0

У меня есть форма, кроме загрузки файла, я продолжал проверку на другие типы ввода, но если я не буду выбирать какой-либо файл, тогда мой скрипт добавит пустую таблицу загрузок . есть ли способ проверить пользователь загружает ли какой-либо файл, и если есть файл, то я могу запустить мой сценарий загрузки ... вот сценарийPHP, вставляющий пустую строку в таблицу mysql, когда загрузка файла пуста

if (isset($_FILES['fileupload'])) { 
    $errors  = array(); 
    $connection = db::factory('mysql'); 
    $user_id = $_SESSION['userid']; 
    foreach ($_FILES['fileupload']['tmp_name'] as $key => $tmp_name) { 
     $file_name = $_FILES['fileupload']['name'][$key]; 
     $file_size = $_FILES['fileupload']['size'][$key]; 
     $file_tmp = $_FILES['fileupload']['tmp_name'][$key]; 
     $file_type = $_FILES['fileupload']['type'][$key]; 
     if ($file_size > 2097152) { 
      $errors[] = 'File size must be less than 2 MB'; 
     } 
     $upload_dir = ROOT; 
     $desired_dir = ROOT . "/uploads/"; 
     if (empty($errors) == true) { 
      if (is_dir(ROOT . "/uploads/") == false) { 
       mkdir(ROOT . "/uploads/", 0700); 
      } 
      if (is_dir(ROOT . "/uploads/" . $file_name) == false && !file_exists(ROOT . "/uploads/" . $file_name)) { 
       $file_path = ROOT . "/uploads/" . $file_name; 
       move_uploaded_file($file_tmp, $file_path); 
       $full_path = mysql_real_escape_string($file_path); 
       $query  = "INSERT INTO uploads (`User_Id`,`File_Name`,`File_Path`,`File_Size`,`File_Type`) VALUES('$user_id','$file_name','$full_path','$file_size','$file_type'); "; 
       mysql_query($query); 
      } else { 
       $new_path = ROOT . "/uploads/" . time() . "_" . $file_name; 
       rename($file_tmp, $new_path); 
       $file_path = $new_path; 
       $full_path = mysql_real_escape_string($file_path); 
       $query  = "INSERT INTO uploads (`User_Id`,`File_Name`,`File_Path`,`File_Size`,`File_Type`) VALUES('$user_id','$file_name','$full_path','$file_size','$file_type'); "; 
       mysql_query($query); 

      } 
     } else { 
      print_r($errors); 
     } 
    } 
    if (empty($error)) { 
     //echo "Success"; exit; 
     return true; 
    } 

    return false; 
+0

Ваша схема отступов делает это действительно очень сложно прочитать ваш код. Подумайте об использовании текстового редактора или IDE, который сделает это автоматически для вас. –

+0

.. Проверьте, пусты ли переменные? И ** НЕ ** использование устаревших библиотек. – christopher

+0

Я не получил u @Chris ... –

ответ

1

Если я правильно помню, поле загрузки файла создаст запись в $ _FILES, пустой или нет. В этом случае вам лучше всего проверить, что $_FILES['fileupload']['size'][$key] больше нуля или что $_FILES['fileupload']['name'][$key] не пуст.

Это должно дать вам ответ для каждого файла загрузки у вас на форме (даже если у вас есть много.)

+0

Существует также '$ _FILES ['fileupload'] ['error']', который укажет, не было ли загружено файлов (или возникла какая-то другая ошибка). – DCoder

0

внутри вашего foreach loop,
поставил условие

if($_FILES['fileupload']['name'][$key]!="") 
{ 
    //your code 
} 
+0

Это не работает приятель. Я пробовал это до –

+0

try 'print_r ($ _ FILES)' и проверить, что является результатом. – DS9

+0

, а также проверить этот URL: http: //php.net/manual/en/features.file -upload.errors.php – DS9

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