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

meverikxp
#1 3. November 2012, 01:02

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

Macik
#2 3. November 2012, 03:13

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

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

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

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
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:

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


Dieser Beitrag wurde von Benderoki (am 3. November 2012, 06:52, vor 12 Jahre) bearbeitet
Yusupov
#4 3. November 2012, 07:01

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

Benderoki
#5 3. November 2012, 07:08
#36088 Yusupov:

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

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

 

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

 


Dieser Beitrag wurde von Benderoki (am 3. November 2012, 07:17, vor 12 Jahre) bearbeitet
Yusupov
#6 3. November 2012, 07:16

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

Benderoki
#7 3. November 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? Т.е. в настройках, если не ошибаюсь, есть настройка типов заливаемых файлов, можно ли как-то ограничить типы файлов


Dieser Beitrag wurde von Benderoki (am 3. November 2012, 08:13, vor 12 Jahre) bearbeitet
Macik
#8 3. November 2012, 08:19

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

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

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

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

 

Added 4 hours later:

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

Added 7 minutes later:

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

Added 31 minutes later:

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


Dieser Beitrag wurde von Benderoki (am 3. November 2012, 12:54, vor 12 Jahre) bearbeitet
meverikxp
#10 3. November 2012, 20:00
#36088 Yusupov:

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

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