Форуми / National / Russian / Тех. поддержка / Загрузка файлов на сервер

meverikxp
#1 03.11.2012 01:02

Здравствуйте, подскажите как можно реализовать загрузку файлов на сервер штатными средствами CMF Cotonti. Пробовал обычными средствами php так и не получилось, хотя если выполнить скрипт отдельно от CMS то все работает. Подскажите как решить данную задачу. Спасибо!

Macik
#2 03.11.2012 03:13

Опишите задачу подробнее, что за файл, чем не устраивает встроенная PFS ?  Или вы пишите свой плагин ?  

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F
Benderoki
#3 03.11.2012 06:47

Подскажите кто-нибудь, что значит Hooks=.... ? В двух файлах единственное различие в этих хуках, но в одном все прекрасно работает, в другом вообще никак не работает. За скрипт добавления файла на сервер отвечает скрипт 

			if($_FILES["file"]['size'][$i] > 0 && $_FILES["file"]['error'][$i] == 0){
				
				$u_tmp_name_file = $_FILES['file']['tmp_name'][$i];
				$u_type_file = $_FILES['file']['type'][$i];
				$u_name_file = $_FILES['file']['name'][$i];
				$u_size_file = $_FILES['file']['size'][$i];
				
				if(!empty($u_tmp_name_file)){
					$u_name_file  = str_replace("\'",'',$u_name_file );
					$u_name_file  = trim(str_replace("\"",'',$u_name_file ));
					$dotpos = strrpos($u_name_file,".")+1;
					$f_extension = substr($u_name_file, $dotpos, 5);
					$u_newname_file = md5(uniqid(rand(),true)).".".$f_extension;
					$file = "datas/attachs/".$u_newname_file;
					
					move_uploaded_file($u_tmp_name_file, $file);
					@chmod($file, 0766);
					
					$sql = sed_sql_query("INSERT INTO sed_attachs (
					att_pid,
					att_file
					) VALUES(
					".(int)$id.",
					'".sed_sql_prep($file)."'
					)");}}
			

Но при добавлении в файл projectsposts.offers.loop.php он не работает :( При этом все прекрасно заливается в файле offers.projects.default.loop.php, единственное различие я так понимаю в хуках, можно подключить дополнительный как-нибудь?

Added 6 minutes later:

Хотя возможно ещё и с самой формой добавления проблемы возникают.


Відредаговано: Benderoki (03.11.2012 06:52, 12 років тому)
Yusupov
#4 03.11.2012 07:01

Для тэга <form> прописан атрибут:  enctype="multipart/form-data" ?

Benderoki
#5 03.11.2012 07:08
#36088 Yusupov:

Для тэга <form> прописан атрибут:  enctype="multipart/form-data" ?

Добавил, но лучше не стало :( всё равно не заливает файлы на сервер

 

Ох огромнейшее спасибо :) Вы избавили меня от проблемы, на решение которой я убил дня 3 :)

 


Відредаговано: Benderoki (03.11.2012 07:17, 12 років тому)
Yusupov
#6 03.11.2012 07:16

Нельзя так просто скопировать часть кода и перенести куда вам нужно. Смотрите исходники. У вас же нет привязки к сообщению к которому вы файлы прикрепляете. А вдруг в таблице уже есть файлы с таким же значением att_pid? Вообще эта таблица предназначена для файлов прикрепленных к проектам, а не для других сущностей. 

Benderoki
#7 03.11.2012 07:19
#36090 Yusupov:

Нельзя так просто скопировать часть кода и перенести куда вам нужно. Смотрите исходники. У вас же нет привязки к сообщению к которому вы файлы прикрепляете. А вдруг в таблице уже есть файлы с таким же значением att_pid? Вообще эта таблица предназначена для файлов прикрепленных к проектам, а не для других сущностей

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

 

Added 24 minutes later:

Подскажите ещё, пожалуйста. Как можно сделать, чтоб надпись "загрузить" отображается только если в таблице что-то есть, т.е. если файлы не заливали, то и надпись эта не должна показыватся. Поидее как-то проверку просто ввести? 

Попробовал так: 

        if(!empty($posts['post_attachs'])){ $pst->assign(array( "POST_ROW_ATTACHS" => $posts['post_attachs'], ));}

Но это только проверка, надпись всё равно выводится

Added 29 minutes later:

И ещё вопрос, эта переменная $_FILES это общая переменная cms? Т.е. в настройках, если не ошибаюсь, есть настройка типов заливаемых файлов, можно ли как-то ограничить типы файлов


Відредаговано: Benderoki (03.11.2012 08:13, 12 років тому)
Macik
#8 03.11.2012 08:19

Offtopic: у нас тут виртуалы наплодились что ли? 

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F
Benderoki
#9 03.11.2012 08:24
#36092 Macik:

Offtopic: у нас тут виртуалы наплодились что ли? 

Кто простите? :)

 

Added 4 hours later:

О как :) в шаблонах работает IF, разобрался как сделать невидимыми ненужные слова.

Added 7 minutes later:

Ещё подскажите кто-нибудь такой момент. Как сделать функцию доступной только один раз? Т.е. мне в проекте надо сделать кнопочку "оплатить" и она сообственно должна быть доступной лишь 1 раз. Через js сделать как-то кнопочку оплатить и потом ещё тупо скрыть, хотя что-то мне подсказывает что это слишком небезопасно и вообще с дыркой

Added 31 minutes later:

Хотя вроде разобрался, просто табличку paydone сделал


Відредаговано: Benderoki (03.11.2012 12:54, 12 років тому)
meverikxp
#10 03.11.2012 20:00
#36088 Yusupov:

Для тэга <form> прописан атрибут:  enctype="multipart/form-data" ?

Спасибо, действительно пропустил даный атрибут.