Загрузка файлов на сервер через сниппет 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
Showing comments 1 to 10 of 20 | Next | Last
hxsidcm
Posts: 19
Comment
XTlFDYGnkmzKvk
Reply #20 on : Вск Декабрь 25, 2011, 10:34:00
VtdRq0 <a href="http://fmhgyeeyysra.com/">fmhgyeeyysra</a>
Addrienne
Posts: 19
Comment
IrQHxUKYC
Reply #19 on : Вск Декабрь 25, 2011, 01:02:50
Just what the dctoor ordered, thankity you!
ocfxcih
Posts: 19
Comment
BxWAdaxEc
Reply #18 on : Сбт Декабрь 24, 2011, 17:10:05
xr2PZL , [url=http://ruxgrdnbmsao.com/]ruxgrdnbmsao[/url], [link=http://mcydzpsmsxjw.com/]mcydzpsmsxjw[/link], http://ixzgicbarekw.com/
Jera
Posts: 19
Comment
DRrLHLaMObOGEhfOF
Reply #17 on : Птн Декабрь 23, 2011, 18:35:30
Hey, subtle must be your mdilde name. Great post!
loans
Posts: 19
Comment
Re:
Reply #16 on : Втр Декабрь 06, 2011, 19:40:44
That's well known that money can make people autonomous. But how to act when one doesn't have money? The one way only is to try to get the personal loans or just financial loan.
nik_neman
Posts: 19
Comment
Проблема с $target_path
Reply #15 on : Пнд Август 22, 2011, 16:58:32
День добрый.
Подскажите, пожалуйста, как правильно прописать путь в $target_path.
На локалке всё ништяк, а вот на хостинге пишет что загрузило всё норм, а вот в той папке я данный файл не вижу.
И ещё один момент.
Сниппет ParseForm я указал некэшированным, бо если указать кэшированым, то появляеться просто пустая страница.
Anonymous
Posts: 19
Comment
Re: Загрузка файлов на сервер через сниппет eform
Reply #14 on : Втр Май 31, 2011, 15:57:48
Thanks a lot I've been searching for this all day, good job!!!!!
Одиночка Айс
Posts: 19
Comment
Все работает!!!
Reply #13 on : Чтв Апрель 07, 2011, 12:31:41
Сорри, мужики, прошляпил одну букву в названии, спасибо за посты.
Одиночка Айс
Posts: 19
Comment
Не работает!!!
Reply #12 on : Чтв Апрель 07, 2011, 11:35:05
Все подключил, нифига не работает, ParseForm не хочет искать (((
Anonymous
Posts: 19
Comment
Re: Загрузка файлов на сервер через сниппет eform
Reply #11 on : Срд Октябрь 06, 2010, 15:15:45
Вариант со вставкой в базу:

<?php
function ParseForm( &$fields ){
global $modx;
$target_path = "/var/www/modx_valera/assets/upload/";
$target_path = $target_path . basename( $_FILES['attach']['name']);

if(move_uploaded_file($_FILES['attach']['tmp_name'], $target_path)) {
echo "Файл ". basename( $_FILES['attach']['name']). " был загружен.";

// insert record into DB
$db = $modx->db->config['dbase'];
$pre = $modx->db->config['table_prefix'];
$time = time();

$form = isset($_POST) ? $_POST : array();
// Check that POST hasn't already been escaped by magic_quotes
if(!get_magic_quotes_gpc()) {
$name = $modx->db->escape($form['Name']);
$email = $modx->db->escape($form['email']);
$comments = $modx->db->escape($form['comments']);
$attach = $modx->db->escape($_FILES['attach']['name']);
}
$insert = array('name'=>$name, 'email'=>$email, 'comments'=>$comments, 'attach '=>$attach );
$submission_key = $modx->db->insert($insert,"{$db}.{$pre}applications");


} else if(! empty($_POST)){
echo "Загрузить файл не удалось , попробуйте ещё раз!";
}

return true;
}
?>
Showing comments 1 to 10 of 20 | Next | Last

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.