Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Проблема с Центром загрузки


Автор: DzSoft 15.2.2008, 04:24
Сначало, Всем привет!!!!
Немного лирики:
Я только не давно начал изучать PHP, можно сказать ещё не соображаю в этой области.
По этому прошу помочь!

Вопросы у меня такие:
Трабл №1
Вот есть 2 строки.

Полная дорожка, что бы загрузить в папку 
$ufolder = "/www/my_domen.ru/htdocs/img/";

URL к папке, где файлы будут сохранены
$url = "my_domen.ru/img/";

Как мне сделать так, что бы заместо папки img создавалась папка, например с датой день_месяц_год.

Тоесть при загрузки файла числа 15.02.2008 создавалась папка 15_02_2008 и файл сохранялся туда. При том же если другие файлы закачивались того же числа они попадали бы именно в эту папку, а не пропадали.

Трабл №2
Загружаю я на сервер файл. У него допустим название Властелин колец (то есть рускими буквами). Думаю это вообще без разницы, какими.

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

менять ['name'] на ['tmp_name'] - я уже пробывал. Не катит.
да и ошибка постоянно появляется.

Если удалить эту проверку, тогда может быть 2 одинаковых получиться Random, мало вероятно, но может. 

А если всё такие удалить, то имя будет задаваться Рандомом, но сразуже теряется рисширение.

Как мне сделать это не прибегая к удалению это строки для проверки имени ????

Warning: copy(/var/tmp/phpcbgqcr): failed to open stream: No such file or directory in /www/my_domen.ru/htdocs/index.php on line 123

Код

if ($_FILES['file'] != "") {
    
    [color=red]copy($_FILES['file']['tmp_name'], "$ufolder".$_FILES['file']['tmp_name'])[/color] 
        or die("Couldn't copy the file!");  
    
} else {
    
    die("No input file specified");
}


Как быть ?

Автор: gta4kv 15.2.2008, 07:36
No such file or directory in /www/my_domen.ru/htdocs/index.php


Нету такой директории  /www/my_domen.ru/htdocs/

Добавлено через 42 секунды
ну или /var/tmp/phpcbgqcr не существует)

Автор: GeneralElectric 15.2.2008, 09:55
1. date() 
2. basename()

Автор: flashaa 15.2.2008, 12:27
Цитата(gta4kv @  15.2.2008,  07:36 Найти цитируемый пост)
No such file or directory in /www/my_domen.ru/htdocs/index.php
Нету такой директории  /www/my_domen.ru/htdocs/

Вообще-то, данная строка

Цитата(DzSoft @  15.2.2008,  04:24 Найти цитируемый пост)
Warning: copy(/var/tmp/phpcbgqcr): failed to open stream: No such file or directory in /www/my_domen.ru/htdocs/index.php on line 123

означает следующее: предупреждение выдал код "copy(/var/tmp/phpcbgqcr)", а текст предупреждения "failed to open stream: No such file or directory", код, который породил предупреждение находится в файле /www/my_domen.ru/htdocs/index.php на строке 123
 

Автор: gta4kv 15.2.2008, 13:51
flashaa, ой, лагнуло)) ну ты посмотри на время)) семь утра быложе)

Автор: FractalizeR 15.2.2008, 14:42
Для копирования закачанных пользователем на сервер файлов нужно пользоваться move_uploaded_file, а не copy. 

Автор: DzSoft 15.2.2008, 20:50
Цитата(gta4kv @ 15.2.2008,  07:36)
No such file or directory in /www/my_domen.ru/htdocs/index.php


Нету такой директории  /www/my_domen.ru/htdocs/

Добавлено @ 07:36
ну или /var/tmp/phpcbgqcr не существует)

Про дириктории забудь  smile 

Меня волнует вопрос того, что бы "функция" генерировала и создавала папку числом (датой)

Цитата(GeneralElectric @ 15.2.2008,  09:55)

1. date() 
2. basename()


Как правельно прописать-то? Вписать в строку?

Цитата(FractalizeR @ 15.2.2008,  14:42)

Для копирования закачанных пользователем на сервер файлов нужно пользоваться move_uploaded_file, а не copy. 


Ну скажем так, что это не закачка, а всего лишь проверки фийла на подленность имени. Если такого имени не существует, то этот Масиф пропустит данный файл, а если нет.

Скажет типо: Файл уже был ранее закачан на сервер!!!

Автор: DzSoft 21.2.2008, 03:04
В книге вычитал вот такие строки.
По умолчанию файлы будут сохранены в заданном по умолчанию временном каталоге сервера. Его можно изменить, установкой переменной среды TMPDIR в среде, в которой PHP выполняется. Хотя, использование при ее установке обращения PutEnv () изнутри сценария PHP не будет работать.

А как правельно прописывать и всё остальное не рассказали. Книга чёт какая-то странная. Вроде для новечка, а без обьяснений и примеров.

Автор: SelenIT 21.2.2008, 03:31
Хороших книг по PHP вообще очень мало. Лучше учиться сразу по мануалу - там и информация новее (по большей части по-русски), и http://www.php.net/manual/ru/features.file-upload.php есть...
Цитата(DzSoft @  15.2.2008,  20:50 Найти цитируемый пост)
что бы "функция" генерировала и создавала папку числом (датой)

Папки создает http://www.php.net/manual/ru/function.mkdir.php. Получить строку с датой можно с помощью http://www.php.net/manual/ru/function.date.php, формат я советую взять не день-месяц-год, а год-месяц-день - так сортировка папок по алфавиту будет автоматически сортировать их и по дате. Итого в простейшем виде:
Код

mkdir(date('Y-m-d'));


Добавлено через 1 минуту и 6 секунд
Еще наверняка пригодится http://phpfaq.ru/paths

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)