Загрузка файлов на сервер через сниппет eform

1) Создаём чанк {{Upload_File}} со следующим содержимым:

  1.  
  2. [!ParseForm!]
  3. [!eForm? &formid=`sendfile` &to=`XXX@YYY.com` &tpl=`Upload_File_tpl` &vericode=`1` &report=`Upload_File_Report` &subject=`Сообщение с сайта XXX.RU` &eFormOnBeforeFormParse=`ParseForm` !]
  4.  

2) Создаём чанк {{Upload_File_tpl}} со следующим содержимым:

  1.  
  2. <div id="forma">
  3. <p><span style="color:#FF0000;">[+validationmessage+]</span></p>
  4. <br/>
  5. <form method="post" action="[~[*id*]~]" enctype="multipart/form-data">
  6. <input type="hidden" name="formid" value="sendfile" />
  7.  
  8. <table id="ordertable" cellpadding="0" cellspacing="0" >
  9. <tr >
  10. <td >Ваше Имя:</td>
  11. <td ><input type="text" name="Name" size="40" maxlength="60" eform="Ваше Имя::1" /></td>
  12. </tr>
  13. <tr >
  14. <td >Ваш email адрес:</td>
  15. <td><input type="text" name="email" size="40" maxlength="60" eform="Ваш email:email:1" /></td>
  16. </tr>
  17. <tr >
  18. <td >Текст письма:</td>
  19. <td><textarea cols="40" rows="6" name="comments" eform="Текст письма:html:1"></textarea></td>
  20. </tr>
  21. <tr >
  22. <td >Приложить файл:</td>
  23. <td>
  24. <input type="file" name="attach" accept="*/*" eform="Attachment:file:0" />
  25. </td>
  26. </tr>
  27. <tr >
  28. <td colspan="2">Пожалуйста введите код: (Чтобы предупредить спам)</td>
  29. </tr>
  30. <tr >
  31. <td ><img src="[+verimageurl+]" alt="verification code" /></td>
  32. <td><input type="text" name="vericode" size="20" /></td>
  33. </tr>
  34. <tr>
  35. <td>&nbsp;</td>
  36. <td><input type="submit" name="submit" value="Отправить" ></td>
  37. </tr>
  38.  
  39. </table>
  40.  
  41. </form>
  42. </div>

Не забываем вместо accept="*/*" поставить соответсвующий тип MIME

3) Создаём чанк {{Upload_File_Report}} со следующим содержимым:

  1.  
  2. <p>Это письмо было отправлено с сайта XXX.ru</p>
  3. <table>
  4. <tr ><td>Name:</td><td>[+Name+]</td></tr>
  5. <tr ><td>Email:</td><td>[+email+]</td></tr>
  6. <tr ><td>Текст сообщения:</td><td>[+comments+]</td></tr>
  7. </table>
  8. <p>Attachment:[+attach+]</p>
  9.  

4) Создаём сниппет [[ParseForm]] со следующим содержимым:

  1.  
  2. <?php
  3. function ParseForm( &$fields ){
  4. //global $modx;
  5.  
  6. $target_path = "/home/путь к вашему хосту/public_html/assets/images/upload/";
  7. $target_path = $target_path . basename( $_FILES['attach']['name']);
  8.  
  9. if(move_uploaded_file($_FILES['attach']['tmp_name'], $target_path)) {
  10. echo "Файл ". basename( $_FILES['uploadedfile']['name']). " был загружен.";
  11. } else{
  12. echo "Загрузить файл не удалось , попробуйте ещё раз!";
  13. }
  14.  
  15. return true;
  16. }
  17. ?>
  18.  

Важно:
Не забудьте исправить путь к папке куда Вы собираетесь поместить загруженный файл - $target_path = "/home/путь к вашему хосту/public_html/assets/images/upload/"; Этот путь должен быть верным !

5) Вставляем {{Upload_File}} на странице или в шаблоне, где хотелось бы увидеть форму.
Не большое замечание, проверьте настройки вашего хостинга и размер допустимого к загрузке файла.

 

Последнее изменение документа: 24 Апрель 2011
First | Previous | Showing comments 11 to 15 of 15
Alexx
Posts: 14
Comment
Re: Загрузка файлов на сервер через сниппет eform
Reply #5 on : Втр Январь 26, 2010, 11:56:21
почти то что нужно, сейчас буду пробовать переделать
спасибо!!!

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

спасибо, очень интересные статьи!
admin
Posts: 1
Comment
Re: Загрузка файлов на сервер через сниппет eform
Reply #4 on : Срд Октябрь 28, 2009, 13:17:32
Вообще говоря вопрос не ко мне ) , для реализации загрузки и дальнейшей обработки файла нужно править код сниппета,то есть обычный php код.

Постпроцессом закачки управляет функция move_uploaded_file - почитать о ней можно здесь:
http://www.php.ru/manual/function.move-uploaded-file.html
или здесь:
http://ru.php.net/move_uploaded_file

Файловые функции php по русски описаны здесь
http://www.php.ru/manual/ref.filesystem.html

Решить описанную задачу конечно же можно.
1234
Posts: 14
Comment
Re: Загрузка файлов на сервер через сниппет eform
Reply #3 on : Пнд Октябрь 26, 2009, 20:59:11
У меня вопрос можно ли переименовывать файл в процессе закачки.
например: человек закачивает файл сканер.zip,
а в папку кладется 26102009.zip
то есть название файлов приводится к одному формату в моем примере это текущая дата закачки.
1234
Posts: 14
Comment
Re: Загрузка файлов на сервер через сниппет eform
Reply #2 on : Пнд Октябрь 26, 2009, 02:39:35
Этот сайт один из моих любимых.
за 3 дня срубил 2 нужных вещи которых нет ни где.
огромное человеческое спасибо
Alex
Posts: 14
Comment
Re: Загрузка файлов на сервер через сниппет eform
Reply #1 on : Срд Октябрь 14, 2009, 05:05:21
О, а я как раз искал такую статью. Спасибо.
First | Previous | Showing comments 11 to 15 of 15

Write a comment

  • Required fields are marked with *.

If you have trouble reading the code, click on the code itself to generate a new random code.