Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
 Аватар для taxsin
0 / 0 / 0
Регистрация: 01.02.2013
Сообщений: 27

Загрузка файлов на сервер

18.02.2013, 12:24. Показов 2034. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Прошу помощи с поиском скрипта загрузки файлов на сервер. Преимущественно doc и exel. Пользователь должен просматривать каталог файлов и скачивать нужный, так же загружать на сервер, что бы этот документ потом смогли скачать другие.

Добавлено через 50 минут
Помогите нубу)
Есть такой код:

Первый файл. Имя ему form_upld.php
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
<?php 
 
// Подключаем файл функций
include 'funcs.php';
 
// Проверяем правильность отправки данных именно с той формы 
// в которой значение кнопки, т.е. надпись равна - 'Загрузить'
// Только если это значение совпадает будет активирована
// наша функция загрузки файлов.
if($_POST['go'] == 'Загрузить')
{
   echo upload('filename', './upload2/', $_POST['f']);
   
 
}
   if($_POST['delete'] == 'Удалить')
   {
      
     deletfile($_POST['pach'],$_POST['filename']);
   }
 
?>
 
<!-- Форма  загрузки файлов -->
<form action="" method="post" enctype="multipart/form-data">
  <input name="filename" type="file">
   <br>
<input name="f" type="checkbox" value="1">
      <sup> - перезаписать</sup>
<br>
<input name="go" type="submit" value="Загрузить"></form>
Второй файл. Имя ему funcs.php

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<?php 
 
// Загрузка файлов
function upload($filename, $pach, $flag = false)
{
    
    // $filename - это свойство name в input 
    // $pach - директория куда будет сохранён загруженный файл
    // директория загрузки должна иметь доступ 777
    // $flag - по умолчанию false (0), 
    // определяет перезапись существующего файла в директории, если выставлен TRUE (1)
    
    // Проверяет существует ли директория и возможно ли её открыть из этого скрипта
    if(!opendir($pach)){return 'Директория сохранения файлов, указана неверно!';}
    
    // устанавливаем директорию загрузки файла
     $uploadfile = $pach.basename($_FILES[$filename]['name']);
    
    // Устанавливаем вариант перезаписи файла
    // если false, файл не перезаписывается, а выдаётся предупреждение.
    if(!$flag){
        // Проверяем существует ли такой файл в директории
        if(is_file($uploadfile)) return('ВНИМАНИЕ! Такой файл уже существует.');
    }
    
    if(!empty($filename))
    {
      
      // Ограничения размера загружаемого файла
      if($_FILES[$filename]['size'] > 1024*2*1024)
       {
         return("Размер файла превышает 2 мегабайта");
         
       }
       // Проверяем загружен ли файл
       if(is_uploaded_file($_FILES[$filename]['tmp_name']))
       {
         // Если файл загружен успешно, перемещаем его
         // из временной директории в конечную
         
         if(copy($_FILES[$filename]['tmp_name'],$uploadfile))
         {
          
          echo '<form method="post">
                 <input name="filename" type="hidden" value="'.$_FILES[$filename]['name'].'">
                <input name="pach" type="hidden" value="'.$pach.'">
               <input name="delete" type="submit" value="Удалить">
               </form>';
          
             return('OK! Файл успешно загружен.');
         }
         else
         {
            return('<strong>'/*. $_FILES[$filename]['tmp_name'].$pach */.$_FILES[$filename]['name'].' </strong> - не является правильно загруженным файлом или
не может быть перемещён из временной директории.');     
         }
       } 
       else 
       {
          switch($_FILES[$filename]['error'])
          {
              case 1: echo 'Размер файла превышает допустимый.';
              break;
              case 2: echo 'Размер файла превышает допустимый.';
              break;
              case 3: echo 'Загружаемый файл был получен только частично.';
              break;
              case 4: echo 'Файл не был загружен!';
              break;
          }
          
       }
    }
    else
    {
        return('Не указан файл для загрузки!');    
    }
}
 
function deletfile($directory,$filename)
{
  // открываем директорию (получаем дескриптор директории)
  $dir = opendir($directory);
  
  // считываем содержание директории
while(($file = readdir($dir)))
{
          // Если это файл и он равен удаляемому ...
  if((is_file("$directory/$file")) && ("$directory/$file" == "$directory/$filename"))
  {
    // ...удаляем его.
    unlink("$directory/$file");
                  
     // Если файла нет по запрошенному пути, возвращаем TRUE - значит файл удалён.
    if(!file_exists($directory."/".$filename)) return $s = TRUE;
  }
}
  // Закрываем дескриптор директории.
  closedir($dir);
} 
 
?>
есть директория в которую записываются файлы.

Как сделать так что бы все загруженные файлы отображались списком на странице и их можно было скачать, а рядом с названием загруженного файла кнопка удаления? При чем желательно список должен быть разделен на категории: категории картинок, документов и .т. д.
Заранее благодарю.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.02.2013, 12:24
Ответы с готовыми решениями:

Загрузка файлов на сервер
Столкнулся с таким траблом Написал скрипт загрузки изображения на сервер $url = &quot;ava&quot;; if($_FILES){ ...

загрузка файлов на сервер
Добрый день! Такой вопрос: необходимо загрузить файлы(картинки) на сервер - для этих целей я скачал и установил скрипт из инета. Вот только...

Загрузка файлов на сервер
Как осуществить загрузку нескольких файлов на сервер?

15
 Аватар для daruwanov
77 / 58 / 8
Регистрация: 10.03.2011
Сообщений: 354
18.02.2013, 12:24
А стандартный загрузчик не подходит?
0
 Аватар для taxsin
0 / 0 / 0
Регистрация: 01.02.2013
Сообщений: 27
18.02.2013, 12:28  [ТС]
В смысле какой стандартный?
Мне нужно организовать загруженные файлы и в последствии скачать
0
 Аватар для daruwanov
77 / 58 / 8
Регистрация: 10.03.2011
Сообщений: 354
18.02.2013, 12:44
Прошу прощения, просто дополнительную информацию вы выложили, буквально после того как я ответил. А изначально по вашему вопросу был именно такой ответ. Я говорил про стандартный
HTML5
1
<input type="file"/>
Так а теперь по существу.
После того как вы загрузили файл на сервер, вам нужно просканировать директорию с файлами, и обработать, каждый файл отдельно.
примерно так
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$dir="/my_files";//папка с файлами
$files_arr=scandir($dir);
foreach($files_arr as $file){
if($file!='.'&&$file!='..'){
    $ext=explode('.',$file);
    if($ext[1]=='.jpg'){//Картинки jpg  
        $path="$dir/{$files_arr[$i]}";//полный путь к файлу
        echo "<a href='".$path."'></a>';//ссылка на файл
        
        
        
    }
        
}
}
0
 Аватар для taxsin
0 / 0 / 0
Регистрация: 01.02.2013
Сообщений: 27
18.02.2013, 12:51  [ТС]
Хмм.. а как этот код интегрировать в мой?)
Простите за вопросы, просто голова что-то совсем у меня не варит
0
 Аватар для daruwanov
77 / 58 / 8
Регистрация: 10.03.2011
Сообщений: 354
18.02.2013, 12:59
Попробуйте вставить, в то место где вы хотите, что бы у вас отображался список файлов на странице.
0
 Аватар для taxsin
0 / 0 / 0
Регистрация: 01.02.2013
Сообщений: 27
18.02.2013, 19:31  [ТС]
Вставил так:
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
<?php 
 
// Подключаем файл функций
include 'funcs.php';
 
// Проверяем правильность отправки данных именно с той формы 
// в которой значение кнопки, т.е. надпись равна - 'Загрузить'
// Только если это значение совпадает будет активирована
// наша функция загрузки файлов.
if($_POST['go'] == 'Загрузить')
{
   echo upload('filename', './upload2/', $_POST['f']);
   
 
}
   if($_POST['delete'] == 'Удалить')
   {
      
     deletfile($_POST['pach'],$_POST['filename']);
   }
 
?>
<?php
$dir="/upload2";
$files_arr=scandir($dir);
foreach($files_arr as $file){
if($file!='.'&&$file!='..'){
    $ext=explode('.',$file);
    if($ext[1]=='.jpg'){
        $path="$dir/{$files_arr[$i]}";
        echo "<a href='".$path."'></a>";       
    }
        
}
}
?>
<!-- Форма  загрузки файлов -->
<form action="" method="post" enctype="multipart/form-data">
  <input name="filename" type="file">
   <br>
<input name="f" type="checkbox" value="1">
      <sup> - перезаписать</sup>
<br>
<input name="go" type="submit" value="Загрузить"></form>
Пишет что ошибка в
PHP
1
$dir="/my_files";//папка с файлами
Добавлено через 21 минуту
Вопрос остается открытым)

Добавлено через 6 часов 2 минуты
ап(ап)
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
19.02.2013, 00:01
Цитата Сообщение от taxsin Посмотреть сообщение
Пишет что ошибка в
какая ошибка-то?
0
 Аватар для taxsin
0 / 0 / 0
Регистрация: 01.02.2013
Сообщений: 27
19.02.2013, 01:18  [ТС]
вот линия как раз соответствует тому что выше написал
Миниатюры
Загрузка файлов на сервер  
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
19.02.2013, 10:09
не находит папку upload2 в корне сайта
0
 Аватар для taxsin
0 / 0 / 0
Регистрация: 01.02.2013
Сообщений: 27
19.02.2013, 10:40  [ТС]
Все равно не выводит содержимое папки (директории upload2).

на сервере лежит:https://www.cyberforum.ru/atta... 1361255723

в папке upload2:https://www.cyberforum.ru/atta... 1361255723

Содержимое файла form_upld

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
<?php 
 
// Подключаем файл функций
include 'funcs.php';
 
// Проверяем правильность отправки данных именно с той формы 
// в которой значение кнопки, т.е. надпись равна - 'Загрузить'
// Только если это значение совпадает будет активирована
// наша функция загрузки файлов.
if($_POST['go'] == 'Загрузить')
{
   echo upload('filename', './upload2/', $_POST['f']);
   
 
}
   if($_POST['delete'] == 'Удалить')
   {
      
     deletfile($_POST['pach'],$_POST['filename']);
   }
 
?>
<?php
$dir="upload2";
$files_arr=scandir($dir);
foreach($files_arr as $file){
if($file!='.'&&$file!='..'){
    $ext=explode('.',$file);
    if($ext[1]=='.jpg'){
        $path="$dir/{$files_arr[$i]}";
        echo "<a href='".$path."'></a>";       
    }
        
}
}
?>
<!-- Форма  загрузки файлов -->
<form action="" method="post" enctype="multipart/form-data">
  <input name="filename" type="file">
   <br>
<input name="f" type="checkbox" value="1">
      <sup> - перезаписать</sup>
<br>
<input name="go" type="submit" value="Загрузить"></form>
Содержимое файла funcs:
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<?php 
 
// Загрузка файлов
function upload($filename, $pach, $flag = false)
{
    
    // $filename - это свойство name в input 
    // $pach - директория куда будет сохранён загруженный файл
    
    // $flag - по умолчанию false (0), 
    // определяет перезапись существующего файла в директории, если выставлен TRUE (1)
    
    // Проверяет существует ли директория и возможно ли её открыть из этого скрипта
    if(!opendir($pach)){return 'Директория сохранения файлов, указана неверно!';}
    
    // устанавливаем директорию загрузки файла
     $uploadfile = $pach.basename($_FILES[$filename]['name']);
    
    // Устанавливаем вариант перезаписи файла
    // если false, файл не перезаписывается, а выдаётся предупреждение.
    if(!$flag){
        // Проверяем существует ли такой файл в директории
        if(is_file($uploadfile)) return('ВНИМАНИЕ! Такой файл уже существует.');
    }
    
    if(!empty($filename))
    {
      
      // Ограничения размера загружаемого файла
      if($_FILES[$filename]['size'] > 1024*2*1024)
       {
         return("Размер файла превышает 2 мегабайта");
         
       }
       // Проверяем загружен ли файл
       if(is_uploaded_file($_FILES[$filename]['tmp_name']))
       {
         // Если файл загружен успешно, перемещаем его
         // из временной директории в конечную
         
         if(copy($_FILES[$filename]['tmp_name'],$uploadfile))
         {
          
          echo '<form method="post">
                 <input name="filename" type="hidden" value="'.$_FILES[$filename]['name'].'">
                <input name="pach" type="hidden" value="'.$pach.'">
               <input name="delete" type="submit" value="Удалить">
               </form>';
          
             return('OK! Файл успешно загружен.');
         }
         else
         {
            return('<strong>'/*. $_FILES[$filename]['tmp_name'].$pach */.$_FILES[$filename]['name'].' </strong> - не является правильно загруженным файлом или
не может быть перемещён из временной директории.');     
         }
       } 
       else 
       {
          switch($_FILES[$filename]['error'])
          {
              case 1: echo 'Размер файла превышает допустимый.';
              break;
              case 2: echo 'Размер файла превышает допустимый.';
              break;
              case 3: echo 'Загружаемый файл был получен только частично.';
              break;
              case 4: echo 'Файл не был загружен!';
              break;
          }
          
       }
    }
    else
    {
        return('Не указан файл для загрузки!');    
    }
}
 
function deletfile($directory,$filename)
{
  // открываем директорию (получаем дескриптор директории)
  $dir = opendir($directory);
  
  // считываем содержание директории
while(($file = readdir($dir)))
{
          // Если это файл и он равен удаляемому ...
  if((is_file("$directory/$file")) && ("$directory/$file" == "$directory/$filename"))
  {
    // ...удаляем его.
    unlink("$directory/$file");
                  
     // Если файла нет по запрошенному пути, возвращаем TRUE - значит файл удалён.
    if(!file_exists($directory."/".$filename)) return $s = TRUE;
  }
}
  // Закрываем дескриптор директории.
  closedir($dir);
} 
 
?>
не пойму почему не работает(

по идее он должен выводить списком содержимое директории upload2 в виде ссылки на скачиваение.
Миниатюры
Загрузка файлов на сервер   Загрузка файлов на сервер  
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
19.02.2013, 10:48
Цитата Сообщение от taxsin Посмотреть сообщение
if($ext[1]=='.jpg'){
условие никогда не выполнится, вы же по точке разбиваете.
Цитата Сообщение от taxsin Посмотреть сообщение
PHP
1
while(($file = readdir($dir)))
PHP
1
while( false !== ($file = readdir($dir)) )
И вместо copy() используйте move_uploaded_file()

P.S. это все не уберет ошибки ненайденной директории
0
 Аватар для taxsin
0 / 0 / 0
Регистрация: 01.02.2013
Сообщений: 27
19.02.2013, 10:55  [ТС]
Цитата Сообщение от KOPOJI Посмотреть сообщение

P.S. это все не уберет ошибки ненайденной директории
Разобрался. Можно сделать вот так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php 
$dir="upload2/"; //берем директорию 
$ar=array(); 
$dh = opendir($dir); 
while ($file_d = readdir($dh)) : 
if ($file_d[0] != ".") //не выводим вложенные папки 
{ 
array_push($ar, $file_d); //читаем все файлы в директории 
} 
endwhile; 
closedir($dh);
print "<br>";
 
sort($ar); //сортируем файлы по имени
 
for($i=0;$i<count($ar);$i++) { 
print "<a href='".$dir.$ar[$i]."' targer='_blank'><img src='".$dir.$ar[$i]."' height='150' alt='".$ar[$i]."' border='0'></a> "; //выводим на экран 
}
 
?>
Спасибо за помощь кто откликнулся)
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
19.02.2013, 11:11
Цитата Сообщение от taxsin Посмотреть сообщение
Можно сделать вот так:
нельзя, readdir может вернуть не boolean значение, которое также приведется к false
Эта функция может возвращать как boolean FALSE, так и не-boolean значение, которое приводится к FALSE. За более подробной информацией обратитесь к разделу Булев тип. Используйте оператор === для проверки значения, возвращаемого этой функцией.
Добавлено через 14 секунд
http://www.php.net/readdir

Добавлено через 54 секунды
Цитата Сообщение от taxsin Посмотреть сообщение
PHP
1
$dh = opendir($dir);
и это лучше заменить проверкой, "открылась" ли директория
PHP
1
2
3
4
if($dh = opendir($dir))
{
....
}
0
 Аватар для taxsin
0 / 0 / 0
Регистрация: 01.02.2013
Сообщений: 27
19.02.2013, 11:41  [ТС]
Еще один вопрос появился по коду)
PHP
1
2
3
for($i=0;$i<count($ar);$i++) { 
print "<a href='".$dir.$ar[$i]."' targer='_blank'><img src='".$dir.$ar[$i]."' height='150' alt='".$ar[$i]."' border='0'></a> "; //выводим на экран 
}
Данный код выводит все элементы директории в строчку. И в виде изображения. Как можно модифицировать что бы он выводил элементы в виде списка поэлементно:
PHP
1
2
3
4
5
6
print 
"<ul type='circle'>
<li>< a href='".$dir.$ar[$i]."'>файл1 </a></li>
<li>< a href='".$dir.$ar[$i]."'>файл1 </a></li>
<li>< a href='".$dir.$ar[$i]."'>файл1 </a></li>
</ul>";
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
19.02.2013, 11:44
PHP
1
2
3
4
5
echo '<ul type="circle">';
for($i = 0, $count = count($ar); $i < $count; $i++) { 
    echo '<li><a href="', $dir, $ar[$i], '" targer="_blank"><img src="', $dir, $ar[$i], '" height="150" alt="', $ar[$i], '" border="0" />', $ar[$i], '</a></li>'; //выводим на экран 
}
echo '</ul>';
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.02.2013, 11:44
Помогаю со студенческими работами здесь

Загрузка файлов на сервер
Подскажите пожалста, есть код: &lt;div id = &quot;buttn&quot;&gt; &lt;div id = &quot;btn_open&quot;&gt; &lt;input type='file' id=&quot;files&quot; name=&quot;files&quot;...

Загрузка файлов на сервер
Подскажите как загрузить файл на сервер, пользуя метод $_GET? имею форму: &lt;form name=&quot;insert&quot;...

Загрузка файлов на сервер
Здравствуйте! Возник такой вопрос: Почему на сервер загружаются не все файлы? загружаю картинки, с виду ничего отличительного нет, но...

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

Загрузка файлов на сервер
Вопрос для кодеров 80 lvl Вопрос стоит так, мне не интересна загрузка файлов - знаю как это делается. Вопрос такой, что...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru