IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   php: залить несколько файлов (http://www.imho.ws/showthread.php?t=56807)

sanchos 20.04.2004 10:55

php: залить несколько файлов
 
есть форма:
__________
<FORM name="file_upload" enctype="multipart/form-data" method="post" action="upload.php">
<INPUT type="file" name="file_0">
<INPUT type="file" name="file_1">
<INPUT type="file" name="file_2">
<INPUT type="submit">
</FORM>
__________

помогите с написанием этого upload.php... как и через какие переменныемне сохранить сразу три файла?
Заранее сенькс :)

is_absent 20.04.2004 11:06

массив $_FILES либо $HTTP_POST_FILES если php версии 4.1.0 или меньше

sanchos 20.04.2004 11:09

что-то типа:
copy($HTTP_POST_FILES['file_1'], "file.tmp");
так? или я что-то не догоняю? :/

is_absent 20.04.2004 11:37

Нет.
$_FILES['file_1']['name'] - имя файла на компе пользователя
$_FILES['file_1']['type'] - миме тип файла
$_FILES['file_1']['size'] - размер файла
$_FILES['file_1']['tmp_name'] - времменное имя, которое можно использовать с функцией move_uploaded_file()
$_FILES['file_1']['error'] - код ошибки. если все ок, то вроде 0... (php 4.2.0 и выше)

sanchos 20.04.2004 11:51

так присвоить свое имя загруженному файлу?
move_uploaded_file($_FILES['file_1']['tmp_name'], "uploaded/temp.bak");
или я опять что-то путаю?

ЗЫ Может проще будет дать пример? :) а то так можно долго в угадайки играть :(

is_absent 20.04.2004 11:53

да именно так.
а пример есть в мануале хороший :)

sanchos 20.04.2004 12:34

тогда еще вопросик... если я сделаю так:
move_uploaded_file($_FILES['file_1']['tmp_name'], "temp_1.bak");
как я понимаю, у меня на сервере создастя файл с именем temp_1.bak, который был залит пользователем... и в ту директорию, в которой я нахожусь сейчас. так? или надо указывать относительный путь?

is_absent 20.04.2004 12:44

в текущую рабочую директорию льется файлик.
в общем ты прав :)

LowNoise 20.04.2004 13:00

Я писал в аналогичном случае примерно так:
$hisfile = $_FILES[$field]['name'][$k];
$thisfile = $_FILES[$field]['tmp_name'][$k];
..
move_uploaded_file ($thisfile, $mydir . '/' . $hisfile);
(имена полей ввода типа FILE у меня сделаны массивом)

is_absent 20.04.2004 13:04

Цитата:

Сообщение от LowNoise
Я писал в аналогичном случае примерно так:
$hisfile = $_FILES[$field]['name'][$k];
$thisfile = $_FILES[$field]['tmp_name'][$k];
..
move_uploaded_file ($thisfile, $mydir . '/' . $hisfile);
(имена полей ввода типа FILE у меня сделаны массивом)

ты видимо делал мультиселект :) а тут несколько разных файлов. и они приходят в отдельных массивах.

sanchos 20.04.2004 13:25

тогда последний вопрос по загрузке... если пользователь в поле ввел ерунду. как мне это проверить?
if(is_uploaded_file($_FILES['file_1']['tmp_name'])){
move_uploaded_file($_FILES['file_1']['tmp_name'], "temp_1.bak");
}
else{
echo "Нема фалов-то..."
}
так? :)

sanchos 20.04.2004 13:27

Стоп. еще вопрос:
если у меня в рабочей директории уже есть файл temp_1.bak, он перезапишется на новый?

is_absent 20.04.2004 13:31

Цитата:

тогда последний вопрос по загрузке... если пользователь в поле ввел ерунду. как мне это проверить?
if(is_uploaded_file($_FILES['file_1']['tmp_name'])){
move_uploaded_file($_FILES['file_1']['tmp_name'], "temp_1.bak");
}
else{
echo "Нема фалов-то..."
}
так?
ага
Цитата:

он перезапишется на новый?
перезапишется

sanchos 20.04.2004 14:27

супер! пошел писАть :) если че - я объявлюсь :))


Часовой пояс GMT +4, время: 23:09.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.