Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/70: Рейтинг темы: голосов - 70, средняя оценка - 4.63
13 / 13 / 0
Регистрация: 04.05.2009
Сообщений: 130
1

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

09.06.2010, 12:36. Показов 13734. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет всем) Не подскажете как загрузить какой нибудь файл на сервер. Есть поле, кнопка "Загрузить" и кнопка "Обзор". Когда нажимаешь на Обзор, открывается директория с файлами, типа выбираешь какой файл загрузить. Как код будет примерно выглядеть?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.06.2010, 12:36
Ответы с готовыми решениями:

загрузка файла на сервер с вашего сайта на чужой сервер под вашим логином!
Извените зараннее если ошибся разделом, не нашел куда можно отнести данную тему и посчитал как...

Загрузка файла на сервер
Добрый день, подскажите пожалуйста, создал кнопку загрузки файла на сервер (upload_farm.html), но...

Загрузка файла на сервер
Народ я в php вобще новичок, создал сервер http://nfots.zz.mu/ и пробую загрузить туда файл с...

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

10
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
09.06.2010, 12:49 2
PHP
1
2
3
4
5
6
7
8
9
10
11
<?php
    if (!empty($_FILES['userfile']))
    {
        // здесь делаем че надо с файлом...
        print_r($_FILES['userfile']);
    }
?>
<form enctype="multipart/form-data" action="" method="POST">
    <input name="userfile" type="file" />
    <input type="submit" value="Загрузить" />
</form>
Добавлено через 1 минуту
Для формы обязательно указывать атрибут enctype="multipart/form-data" - без него работать не будет.

Добавлено через 1 минуту
Если владеете английским, почитайте.
1
Почетный модератор
11531 / 4325 / 449
Регистрация: 12.06.2008
Сообщений: 12,428
09.06.2010, 12:52 3
И проверь файл php.ini
Там должно быть:
file_uploads = On
upload_max_filesize = <максимальный размер файлов>
max_file_uploads = <сколько файлов можно загружать за один раз>
post_max_size = <максимальный объем данных, передаваемых через post... не имеет смысл ставить меньше, чем upload_max_filesize>
1
13 / 13 / 0
Регистрация: 04.05.2009
Сообщений: 130
09.06.2010, 13:00  [ТС] 4
max_file_uploads что-то вообще не ищется

Добавлено через 2 минуты
Цитата Сообщение от ostgals Посмотреть сообщение
userfile
это переменная? или что?))
0
97 / 97 / 17
Регистрация: 18.10.2009
Сообщений: 453
09.06.2010, 13:01 5
пропиШи в ПОИСКе "загрузка файлов на сервер"
-------------------------
Загрузка файлов на сервер
Загрузка файлов на сервер

Здесь будет рассмотрена загрузка файлов на сервер по протоколу HTTP. Рассмотрим два варианта конфигурации PHP:
register_globals=On - все параметры передаваемые скрипту, автоматически становятся глобальными переменными.
register_globals=Off - параметры передаваемые скрипту заносятся в массивы $_GET, $_POST, $_FILES, $_COOKIE, ...
Upload файлов при register_globals=On

Напишем HTML форму для отправки файла на сервер.

Содержание формы (файл upload.html):
HTML5
1
2
3
4
5
6
7
8
<html> 
<body> 
<FORM ENCTYPE="multipart/form-data" ACTION="myup.php" METHOD=POST> 
Выберете файл: <INPUT NAME="myfile" TYPE="file"> 
<INPUT TYPE="submit" VALUE="Загрузить"> 
</FORM> 
</body> 
</html>
После того как пользователь выбрал имя файла и нажал кнопку Загрузить , PHP помещает загружаемый файл во временную директорию указанную в параметре upload_tmp_dir файла php.ini. В этой директории этот файл будет храниться только во время запроса! После запроса PHP удалит этот временный файл. Поэтому загружаемый файл нужно куда-нибудь переместить (если он вам понадобиться в дальнейшем). Явно удалить временный файл можно функцией unlink(string filename) .

Здесь рассмотрим загрузку текстового файла и вывод его содержимого.

Скрипт обработки:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php 
// Загрузка файлов на сервер 
// Если register_globals=On 
 
    print("Имя файла на нашем сервере (во время запроса): ".$myfile."<br>"); 
    print("Имя файла на компьютере пользователя: ".$myfile_name."<br>"); 
    print("MIME-тип файла: ".$myfile_type."<br>"); 
    print("Размер файла: ".$myfile_size."<br><br>"); 
 
    // Получаем содержимое файла 
    $fp = fopen($myfile,"r"); 
    $content = fread($fp, filesize($myfile)); 
    fclose($fp); 
 
    // Вывод содержимого файла 
    print($content); 
?>
Пояснения:

$myfile - имя временного файла, в котором находятся загруженные данные;

Когда пользователь отправляет форму, PHP автоматически определяет ещё несколько переменных:

$myfile_name - имя файла на компьютере компьютере пользователя;

$myfile_type - MIME-тип файла.

$myfile_size - размер файла в байтах.

При загрузке текстовых файлов переменная $myfile_type = "text/plain", при загрузке изображения gif переменная $myfile_type = "image/gif".

При register_globals=On можно пользоваться массивом $_FILES[].
Upload файлов при register_globals=Off

В этом случае PHP формирует массив $_FILES[]. В этом массиве храниться вся информация о всех загружаемых файлах. В нашем случае структура этого массива следующая:

$_FILES["myfile"]["tmp_name"] - Имя временного файла
$_FILES["myfile"]["name"] - Имя файла на компьютере пользователя
$_FILES["myfile"]["size"] - Размер файла в байтах
$_FILES["myfile"]["type"] - MIME-тип файла
$_FILES["myfile"]["error"] - код ошибки.

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
<?php 
// Загрузка файлов на сервер 
// Если register_globals=Off 
 
    // Если upload файла 
    if(isset($_FILES["myfile"])) 
    { 
        $myfile = $_FILES["myfile"]["tmp_name"]; 
        $myfile_name = $_FILES["myfile"]["name"]; 
        $myfile_size = $_FILES["myfile"]["size"]; 
        $myfile_type = $_FILES["myfile"]["type"]; 
        $error_flag = $_FILES["myfile"]["error"]; 
 
        // Если ошибок не было 
        if($error_flag == 0) 
        { 
            print("Имя файла на нашем сервере (во время запроса): ".$myfile."<br>"); 
            print("Имя файла на компьютере пользователя: ".$myfile_name."<br>"); 
            print("MIME-тип файла: ".$myfile_type."<br>"); 
            print("Размер файла: ".$myfile_size."<br><br>"); 
 
            // Получаем содержимое файла 
            $fp = fopen($myfile,"r"); 
            $content = fread($fp, filesize($myfile)); 
            fclose($fp); 
 
            // Вывод содержимого файла 
            print($content); 
 
        } // end of if 2 
    } // end of if 1 
?>
При загрузке можно проверять размер файла ($myfile_size) и если его размер превышает требуемый, то вывод файла не производить.

Значения $_FILES["myfile"]["error"]:

0 - ошибок не было, файл загружен.
1 - размер загруженного файла превышает размер установленный параметром upload_max_filesize в php.ini
2 - размер загруженного файла превышает размер установленный параметром MAX_FILE_SIZE в HTML форме.
3 - загружена только часть файла
4 - файл не был загружен (Пользователь в форме указал неверный путь к файлу).

Если вам необходимо сохранить загруженный файл, то это можно сделать с помощью функций:
copy ( string source, string dest);
move_uploaded_file ( string filename, string destination);

Функция copy() копирует файл source в место назначения dest .

Функция move_uploaded_file() перемещает загруженный файл filename в место назначение указанное в параметре destination .

Ещё хочется отметить что при одновременной загрузке нескольких файлов т.е. когда HTML форма содержит:

<INPUT NAME="myfile1" TYPE="file">
<INPUT NAME="myfile2" TYPE="file">
<INPUT NAME="myfile3" TYPE="file">

массив $_FILES[] будет иметь следующую структуру:

$_FILES["myfile1"]["tmp_name"] - Имя временного файла 1
$_FILES["myfile1"]["name"] - Имя файла на компьютере пользователя 1
$_FILES["myfile1"]["size"] - Размер файла 1 в байтах
$_FILES["myfile1"]["type"] - MIME-тип файла 1
$_FILES["myfile1"]["error"] - код ошибки для файла 1.

$_FILES["myfile2"]["tmp_name"] - Имя временного файла 2
$_FILES["myfile2"]["name"] - Имя файла на компьютере пользователя 2
$_FILES["myfile2"]["size"] - Размер файла 2 в байтах
$_FILES["myfile2"]["type"] - MIME-тип файла 2
$_FILES["myfile2"]["error"] - код ошибки для файла 2.

$_FILES["myfile3"]["tmp_name"] - Имя временного файла 3
$_FILES["myfile3"]["name"] - Имя файла на компьютере пользователя 3
$_FILES["myfile3"]["size"] - Размер файла 3 в байтах
$_FILES["myfile3"]["type"] - MIME-тип файла 3
$_FILES["myfile3"]["error"] - код ошибки для файла 3.

это пример для одновременной загрузки трёх файлов.

Таким же образом можно загружать и двоичные файлы, например файлы картинок gif, jpeg и т.д.

-------------------------
Взяд это здесь.
1
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
09.06.2010, 13:04 6
Это имя элемента формы, через который выбирается файл.

<input type="file" name="abc"> будет соответствовать $_FILES['abc']

Добавлено через 56 секунд
Pafos, нафига копипастил? Просто ссылку не мог дать?
0
13 / 13 / 0
Регистрация: 04.05.2009
Сообщений: 130
09.06.2010, 13:22  [ТС] 7
спасибо всем, разобрался) подскажите директорию куда файл загружается теперь)) а то я только временный файл нахожу
0
1957 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,066
Записей в блоге: 2
09.06.2010, 13:50 8
Это с использование функции copy();:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Каталог, в который мы будем принимать файл:
$uploaddir = './files/';
$uploadfile = $uploaddir.basename($_FILES['uploadfile']['name']);
 
// Копируем файл из каталога для временного хранения файлов:
if (copy($_FILES['uploadfile']['tmp_name'], $uploadfile))
{
   echo "<h3>Файл успешно загружен на сервер</h3>";
}
else
{
   echo "<h3>Ошибка! Не удалось загрузить файл на сервер!</h3>";
   exit;
}
Это с использованием функции move_uploaded_file();:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Каталог, в который мы будем принимать файл:
$uploaddir = './files/';
$uploadfile = $uploaddir.basename($_FILES['uploadfile']['name']);
 
// Копируем файл из каталога для временного хранения файлов:
if (move_uploaded_file($_FILES['uploadfile']['tmp_name'], $uploadfile))
{
   echo "<h3>Файл успешно загружен на сервер</h3>";
}
else
{
   echo "<h3>Ошибка! Не удалось загрузить файл на сервер!</h3>";
   exit;
}
Всё. Это уже было сказано Pafos'ом.
1
97 / 97 / 17
Регистрация: 18.10.2009
Сообщений: 453
09.06.2010, 13:54 9
Цитата Сообщение от XudaH Посмотреть сообщение
спасибо всем, разобрался) подскажите директорию куда файл загружается теперь)) а то я только временный файл нахожу
ну вот, теперь тот временнЫй файл уЖе перемеЩАеШь - туда-куда тебе нуЖно...
Цитата Сообщение от ostgals Посмотреть сообщение
Pafos, нафига копипастил? Просто ссылку не мог дать?
...я неспециально) БольШе так не буду
0
Почетный модератор
11531 / 4325 / 449
Регистрация: 12.06.2008
Сообщений: 12,428
09.06.2010, 15:35 10
Цитата Сообщение от XudaH Посмотреть сообщение
max_file_uploads что-то вообще не ищется
Он появился только в последних версиях (начиная с 5.3.1). Если ты настройки сделал раньше, то у тебя его нет в файле. По умолчанию равен 20.
0
1 / 1 / 1
Регистрация: 21.03.2014
Сообщений: 185
13.04.2014, 20:41 11
Приветствую!
Подскажите еще один момент.
Произвожу загрузку файла на сервер, в файле приема данных название файла заменяется на другое
PHP
1
2
$rc = randomCode($code);
$newfile = $rc."_".$_FILES['file']['name'];
Но все ровно в итоге передается исходное название файла.
Как сделать, чтобы передавалось нужное название?
0
13.04.2014, 20:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.04.2014, 20:41
Помогаю со студенческими работами здесь

Загрузка файла на сервер
Я вот тут загружаю картинку: &lt;form method = &quot;post&quot; action=&quot;index.php&quot;...

Загрузка файла на сервер
подскажите где глаз дал осечку .... &lt;form action=&quot;/dashboard/fg1.php&quot; method=&quot;post&quot;...

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

Загрузка файла на сервер
Ребят, искал-искал что надо - нашел уйму сайтов с кодом для обычной загрузки файлов на сервер с...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru