4 / 4 / 5
Регистрация: 08.05.2013
Сообщений: 55
1

Как загрузить несколько файлов, и записать их имена в БД

04.10.2014, 18:34. Показов 3100. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.

Незнаю как загрузить несколько файлов, и записать их путь в БД.

С 1 файлом разобрался. А вот несколько проблематично стало. =(

Вот код которим я загружаю 1 файл:
HTML5
1
2
3
          <div class="pic">
        <input type="file" name="uploadfile" value="Огляд">
      </div>
PHP
1
2
3
    $uploaddir='/file/';
    $uploadfile=$uploaddir.basename($_FILES['uploadfile']['name']);
    $uploadfile=md5(uniqid(rand(),true)).'.png';
PHP
1
2
3
4
5
6
7
8
9
10
if(move_uploaded_file($_FILES['uploadfile']['tmp_name'], $uploadfile))
        {
            $tes = ("INSERT INTO `catalog`(`pic`) 
                       VALUES('".$uploadfile."')");
            $res = mysql_query($tes);
            if($res) echo "Файл упешно загружен";
            else echo "Путь не добавлен в базу данных, но файл загружен ".mysql_error();
        }
        else echo "Файл не загружен, ";
    }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.10.2014, 18:34
Ответы с готовыми решениями:

Как можно загрузить несколько файлов на одной странице
Как можно загрузить несколько фалов на одной странице, ну к примеру как на почте, когда загружаются...

Как с помощью OpenDialog загрузить имена всех файлов в StringGrid?
Здравствуйте! Подскажите,как с помощью opendialog загрузить имена всех файлов в таблицу и сделать...

Как загрузить несколько файлов из инета одновременно?
Подскажите пожалуйста или хоть намекните, Как загрузить из инета несколько HTML-файлов одновременно?

Как загрузить несколько файлов в Tstringlist через OpenDialog
Всем привет) как загрузить 10-20 Text файлов в Tstringlist через OpenDialog обычно можно...

14
2407 / 2261 / 589
Регистрация: 27.05.2011
Сообщений: 7,745
04.10.2014, 19:34 2
Цитата Сообщение от NightScream Посмотреть сообщение
А вот несколько проблематично стало. =(
Цитата Сообщение от NightScream Посмотреть сообщение
HTML5
1
<input type="file" name="uploadfile" value="Огляд">
1.Ну видимо добавить инпутов
HTML5
1
2
<input type="file" name="uploadfile" value="Огляд">
<input type="file" name="uploadfile2" value="Огляд">

Цитата Сообщение от NightScream Посмотреть сообщение
PHP
1
2
$uploaddir='/file/';
   $uploadfile=$uploaddir.basename($_FILES['uploadfile']['name']);
Выполнить весь код сохранения в цикле для каждого файла
PHP
1
2
3
4
5
6
$uploaddir='/file/';
foreach( $_FILES as $current_file ) {
 ...  
  $uploadfile=$uploaddir.basename($current_file['name']);
 ...
}
И не забывайте проверить, что вам прислали и сколько это весит.
0
4 / 4 / 5
Регистрация: 08.05.2013
Сообщений: 55
04.10.2014, 19:43  [ТС] 3
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
    $uploaddir='/file/';
    $uploadfile=$uploaddir.basename($_FILES['uploadfile']['name']);
    $uploadfile=md5(uniqid(rand(),true)).'.png';
 
    $uploaddir='/file/';
    $screen1=$uploaddir.basename($_FILES['screen1']['name']);
    $screen1=md5(uniqid(rand(),true)).'.png';
 
    $uploaddir='/file/';
    $screen2=$uploaddir.basename($_FILES['screen2']['name']);
    $screen2=md5(uniqid(rand(),true)).'.png';
 
    $uploaddir='/file/';
    $screen3=$uploaddir.basename($_FILES['screen3']['name']);
    $screen3=md5(uniqid(rand(),true)).'.png';
 
    $uploaddir='/file/';
    $screen4=$uploaddir.basename($_FILES['screen4']['name']);
    $screen4=md5(uniqid(rand(),true)).'.png';
 
    $uploaddir='/file/';
    $screen5=$uploaddir.basename($_FILES['screen5']['name']);
    $screen5=md5(uniqid(rand(),true)).'.png';
 
    $uploaddir='/file/';
    $screen6=$uploaddir.basename($_FILES['screen6']['name']);
    $screen6=md5(uniqid(rand(),true)).'.png';
Вот как писал для нескольких файлов. Но пишет в БД только:
PHP
1
2
3
    $uploaddir='/file/';
    $uploadfile=$uploaddir.basename($_FILES['uploadfile']['name']);
    $uploadfile=md5(uniqid(rand(),true)).'.png';
0
2407 / 2261 / 589
Регистрация: 27.05.2011
Сообщений: 7,745
04.10.2014, 19:46 4
Цитата Сообщение от NightScream Посмотреть сообщение
Вот как писал для нескольких файлов
В цикле надо, зачем копипастить 100 раз?
0
4 / 4 / 5
Регистрация: 08.05.2013
Сообщений: 55
04.10.2014, 19:48  [ТС] 5
PHP
1
2
3
4
5
6
$uploaddir='/file/';
foreach( $_FILES as $current_file ) { 
  $uploadfile=$uploaddir.basename($current_file['name']);
  $screen1=$uploaddir.basename($current_file['name']);
  $screen2=$uploaddir.basename($current_file['name']);
}
Так?
0
2407 / 2261 / 589
Регистрация: 27.05.2011
Сообщений: 7,745
04.10.2014, 19:52 6
Не нужно каждому файлу переменная своя. $current_file это каждый файл. И первый и вротой и 100ый. Все что вы сделаете с $current_file внутри цикла вы это сделаете с каждым файлом.

PHP
1
2
3
4
5
$uploaddir='/file/';
foreach( $_FILES as $current_file ) { 
  $uploadfile=$uploaddir.basename($current_file['name']);
  echo $uploadfile , '<br>';
}
Выведутся все, а не 1
0
4 / 4 / 5
Регистрация: 08.05.2013
Сообщений: 55
04.10.2014, 19:56  [ТС] 7
Цитата Сообщение от crautcher Посмотреть сообщение
$uploadfile=$uploaddir.basename($current_file['name']);
Где
Цитата Сообщение от crautcher Посмотреть сообщение
$uploadfile
ето только один файл,
Цитата Сообщение от crautcher Посмотреть сообщение
input type="file" name="uploadfile" value="Огляд">
А для
Цитата Сообщение от crautcher Посмотреть сообщение
<input type="file" name="uploadfile2" value="Огляд">
етого файла как бить?
0
2407 / 2261 / 589
Регистрация: 27.05.2011
Сообщений: 7,745
04.10.2014, 20:00 8
Ну так имя переменной никак не связано с инпутом. Если вам будет проще понять, изменим имя на
PHP
1
2
3
4
5
$uploaddir='/file/';
foreach( $_FILES as $current_file ) { 
  $file_path = $uploaddir.basename($current_file['name']);
  echo $file_path , '<br>';
}
0
4 / 4 / 5
Регистрация: 08.05.2013
Сообщений: 55
04.10.2014, 20:05  [ТС] 9
Ну изменю имя, но в цикле имя только одно. Но у меня есть 7 инпутов для файлов.

HTML5
1
2
3
4
5
6
7
<input type="file" name="uploadfile" value="Огляд">
<input type="file" name="uploadfile2" value="Огляд">
<input type="file" name="uploadfile3" value="Огляд">
<input type="file" name="uploadfile4" value="Огляд">
<input type="file" name="uploadfile5" value="Огляд">
<input type="file" name="uploadfile6" value="Огляд">
<input type="file" name="uploadfile7" value="Огляд">
И мне надо все 7 инпутов.

Как дальше бить???
0
2407 / 2261 / 589
Регистрация: 27.05.2011
Сообщений: 7,745
04.10.2014, 20:08 10
Цитата Сообщение от crautcher Посмотреть сообщение
foreach( $_FILES as $current_file ) {
Это цикл. Повтор кода. Сперва пхп кинет в $current_file $_FILE['uploadfile'], затем когда закончится, выполнит код заново но уже в $current_file закинет $_FILE['uploadfile2'] и так с каждым. $current_file это каждый твой файл.
0
4 / 4 / 5
Регистрация: 08.05.2013
Сообщений: 55
04.10.2014, 20:14  [ТС] 11
PHP
1
2
3
4
5
6
7
8
9
10
11
$uploaddir='/file/';
   $uploadfile=$uploaddir.basename($_FILES['uploadfile']['name']);
   $screen2=$uploaddir.basename($_FILES['screen2']['name']);
   $screen3=$uploaddir.basename($_FILES['screen3']['name']);
   $screen4=$uploaddir.basename($_FILES['screen4']['name']);
   $screen5=$uploaddir.basename($_FILES['screen5']['name']);
 
$uploaddir='/file/';
foreach( $_FILES as $current_file ) { 
  $file_path = $uploaddir.basename($current_file['name']);
}
Примерно так??? Я просто с загрузкой файлов впервие работаю, поетому ничего об етом толком незнаю.
0
2407 / 2261 / 589
Регистрация: 27.05.2011
Сообщений: 7,745
04.10.2014, 20:20 12
Загрузка файла тут не причем, ты на цикле застрял. Манул прочитай http://php.net/manual/ru/contr... oreach.php .
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$uploaddir='/file/';
foreach( $_FILES as $current_file ) { 
  
  $file_path = $uploaddir.basename($current_file['name']);
 
  if(move_uploaded_file($current_file['tmp_name'], $file_path))  {
            $tes = "INSERT INTO `catalog`(`pic`)  VALUES('".$file_path."')";
            $res = mysql_query($tes);
            if($res) 
               echo "Файл $file_path упешно загружен";
            else 
               echo "Путь $file_path не добавлен в базу данных, но файл загружен ".mysql_error();
     }else 
            echo "Файл $file_path не загружен, ";
}
0
4 / 4 / 5
Регистрация: 08.05.2013
Сообщений: 55
04.10.2014, 21:04  [ТС] 13
Знаю что нагло прозвучит, но Ти мог би пример хотя б написать, загрузку для двох файлов?

HTML5
1
2
<input type="file" name="uploadfile" value="Огляд">
<input type="file" name="uploadfile2" value="Огляд">
И запись етих файлов в одну таблицу но в два разних поля.

PHP
1
2
$tes = ("INSERT INTO `catalog`(`uploadfile`, `uploadfile2`) 
                VALUES('".$uploadfile."','".$uploadfile2."')");
0
2407 / 2261 / 589
Регистрация: 27.05.2011
Сообщений: 7,745
04.10.2014, 21:34 14
для двох файлов
Пишется либо под множество, либо под 1. Не важно 2 файла или 100000 - должен работать 1 и тот-же код.

Ну на псевдокоде:
Код
$мои_поля =  массив( uploadfile , uploadfile2 , ... );

Перебераем поля {
 
  если есть файл с именем поля {
     сохраняем файл в папку
     иначе удаляем поле из $мои_поля
  }

}
# теперь должны остаться лишь те поля, файлы которых сохранились
Перебераем поля {
  собираем $кусок_запроса_полей
  собираем $кусок_запроса_значений
}

$query = "insert into `table`( $кусок_запроса_полей ) values ( $кусок_запроса_значений )";
1
4 / 4 / 5
Регистрация: 08.05.2013
Сообщений: 55
07.10.2014, 22:22  [ТС] 15
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
 
 
    $db_host = 'localhost';
    $db_name = 'game';
    $db_username = 'admin';
    $db_password = '123456'; 
 
mysql_connect( $db_host,$db_username,$db_password);
mysql_select_db($db_name);
mysql_query("SET NAMES cp1251");
 
foreach($_FILES['file']['name'] as $k=>$f) {
  if (!$_FILES['file']['error'][$k]) {
    if (is_uploaded_file($_FILES['file']['tmp_name'][$k])) {
      if (move_uploaded_file($_FILES['file']['tmp_name'][$k], "../img/".$_FILES['file']['name'][$k])) {
        echo 'Файл: '.$_FILES['file']['name'][$k].' загружен.<br />';
      }
    }
  }
}
$pic = $_FILES['file']['name'][0];
$screen = $_FILES['file']['name'][1];
$query="INSERT INTO base ( pic, screen ) VALUES ('$pic','$screen')";
 
?>
Вот загрузка двох файлов. Может кому то пригодиться. Скажите спасибо "crautcher" . =)

Добавлено через 52 минуты
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
 
 
 
    $db_host = 'localhost';
    $db_name = 'game';
    $db_username = 'admin';
    $db_password = '123456'; 
 
mysql_connect( $db_host,$db_username,$db_password);
mysql_select_db($db_name);
mysql_query("SET NAMES cp1251");
 
if (!empty($_FILES['uploadfile']['name']) && !empty($_FILES['screen']['name']))
{
    $uploaddir='/file/';
    $uploadfile=$uploaddir.basename($_FILES['uploadfile']['name']);
    $uploadfile=md5(uniqid(rand(),true)).'.png';
 
    $uploaddir='/file/';
    $screen=$uploaddir.basename($_FILES['screen']['name']);
    $screen=md5(uniqid(rand(),true)).'.png';
 
   
 
    if (!is_uploaded_file($_FILES['uploadfile']['tmp_name']))
    {
        echo 'ошибка передачи файла';
    }
    else
    {
 
        if(move_uploaded_file($_FILES['uploadfile']['tmp_name'], $uploadfile) && move_uploaded_file($_FILES['screen']['tmp_name'], $screen))
        {
            $tes = ("INSERT INTO `base`(`pic`, `screen`) 
                VALUES('".$uploadfile."','".$screen."')");
//          echo $tes.'<br>';
            $res = mysql_query($tes);
            if($res) echo "Файл упешно загружен";
            else echo "Путь не добавлен в базу данных, но файл загружен ".mysql_error();
        }
        else echo "Файл не загружен, ";
    }
}
?>
HTML5
1
2
3
4
5
6
7
<form action="add.php" method="post" ENCTYPE="multipart/form-data">
        <label>
          Файл изображения №1: <input type="file" name="uploadfile"><br>
          Файл изображения №2: <input type="file" name="screen"><br>
          <input type="submit" name="add" value="Загрузить"><br>
    </label>
        </form>
Ище один, но очень варварский метод загрузки файлов на сервер и запись в БД.
0
07.10.2014, 22:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.10.2014, 22:22
Помогаю со студенческими работами здесь

Как можно загрузить несколько файлов на разные папки?
Добрый день! Подскажите, пожалуйста, можно ли сделать ссылку на папку, а не на файл? Если да, то...

Загрузить в ListBox имена выбранных файлов
Подскажите пожалуйста. При нажатии кнопки &quot;открыть&quot; выбираю несколько файлов, как мне сделать,...

OpenDialog: как открыть и загрузить в Memo несколько файлов сразу?
Здраствуйте как открыть и загрузить в мемо несколько файлов за 1 клик

Загрузить в ListBox имена файлов, без полного пути
Тут такая задачка: необходимо в (ListBox) lb подобавлять файлы, которые выбирает пользователь....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru