2014-01-19 1 views
0

Я нашел этот код, чтобы загрузить несколько файловPHP, несколько файлов загрузить и получает путь каждого добавления Ones файлов для MySQL

http://www.w3bees.com/2013/02/multiple-file-upload-with-php.html?showComment=1390161630156#c8075663254636569559

Я изменил немного кода для получения папки загрузки/подкаталоги с уникальным идентификатором для каждого из наборов загрузок, поэтому файлы также получают уникальный идентификатор.

$dir=substr(uniqid(),-7); // Uniqid for subdirectory 
$path = "uploads/$dir/"; // uploads/subdirectory/ 
mkdir($path, 0700); // Make directory 
$valid_formats = array("jpg", "png", "jpeg", "kml"); 
$max_file_size = 2097152; 
$count = 0; 
    // Loop $_FILES to exeicute all files 
    foreach ($_FILES['files']['name'] as $f => $name) { 
     if ($_FILES['files']['error'][$f] == 4) { 
      continue; // Skip file if any error found 
     }   
     if ($_FILES['files']['error'][$f] == 0) {    
      if ($_FILES['files']['size'][$f] > $max_file_size) { 
       $message[] = "$name is too large!."; 
       continue; // Skip large files 
      } 
      elseif(! in_array(pathinfo($name, PATHINFO_EXTENSION), $valid_formats)){ 
       $message[] = "$name is not a valid format"; 
       continue; // Skip invalid file formats 
      } 
      else{ // No error found! Move uploaded files 
       $ext = pathinfo($_FILES['files']['name'][$f], PATHINFO_EXTENSION); 
       $uniq_name = substr(uniqid(),-5) . '.' .$ext; 
       $dest = $path . $uniq_name; 
       move_uploaded_file($_FILES["files"]["tmp_name"][$f], $dest); 
       mysqli_query($dbc, "INSERT INTO files (code, name, path, type) VALUES ('$dir','$uniq_name','$dest','$ext')"); 
       $count++; //Number of successfully uploaded file 

      } 
     } 

    } 

} 

Этот процесс выполняется правильно.

Я хочу после move_upload_file получить все пути (url) загрузки файлов. Но я вставил в базу только путь, первый выбранный файл ... другие файлы путей загружаются правильно, но не вставлены в базу данных.

Извините за мой плохой английский, это не мой первый язык. Я надеюсь, что вы можете мне помочь.

ответ

0

попробовать что-то, как

$sql_error = ''; // add this before you start the loop 


if(move_uploaded_file($_FILES["files"]["tmp_name"][$f], $dest)){ 
    $qry = "INSERT INTO files (code, name, path, type) VALUES ('$dir','$uniq_name','$dest','$ext')" ; 

    $result = mysqli_query($dbc, $qry); 
    if (false===$result) { 
    $sql_error .= 'Error in the query '.$qry.' Error Desc :'.mysqli_error($dbc).'<br /><br />' ; 
    } 
} 

Наконец добавить

echo $sql_error ; 

В конце файла, так что если есть какая-либо ошибка, будет показано сообщение об ошибке в запросе.

также путем добавления запроса в

if(move_uploaded_file($_FILES["files"]["tmp_name"][$f], $dest)){} 

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

+0

* - * спасибо, это сработало ... спасибо :) – user3213022

+0

Добро пожаловать :) –

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