Forum Webscript.Ru

Программирование => PHP => Тема начата: ERROR 404 от 05 Сентября 2002, 17:52:28

Название: Файлы на почту аттачем через форму
Отправлено: ERROR 404 от 05 Сентября 2002, 17:52:28
Знающие люди, подскажите плз, как отправить несколько файлов (изображений) через форму на емайл.


Вот в этом примере - приходят битые файлы (0 bytes)

http://www.webscript.ru/stories/01/11/09/1961997
Название: Файлы на почту аттачем через форму
Отправлено: ThE0ReTiC от 05 Сентября 2002, 18:09:51
Перепиши содержимое файла testmail.php вот этим:

include "mailclass.inc";

$mail = new multi_mail;

$mail->from = "from@mydomen.net";
$mail->to = $to;
$mail->subject = "File from me again";
$mail->body = "This is a text body. See file in Attachemnt Release C 15";

copy($HTTP_POST_FILES["filez"][\'tmp_name\'],$HTTP_SERVER_VARS["DOCUMENT_ROOT"]."/test/".$HTTP_POST_FILES[filez][\'name\']);
$file_name = $HTTP_SERVER_VARS["DOCUMENT_ROOT"].\'/test/\'.$HTTP_POST_FILES[filez][\'name\'];
$file_type = $HTTP_POST_FILES[filez][\'type\'];

$file_desc = fopen($file_name,"r");
$file_data = fread($file_desc,filesize($file_name));
             fclose($file_desc);

 echo"$file_name
";
 $file_size = filesize($file_name);
 echo"File size: $file_size
";
 echo"$filez_type
";
 echo"$filez_name
";
 chdir(\'test/\');
$mail -> attach_file($filez_name,$file_data,$file_type);

$mail->send_mail();
echo"Sended OK to ".$mail->to;
chdir(\'../\');
?>

И не забудь, что в корне должна быть папка test, куда сохраняется отсылаемый аттач

Пример:
http://www.artos.ru/mail/sendfile.html
Название: Файлы на почту аттачем через форму
Отправлено: Меняздесьдавнонет от 06 Сентября 2002, 10:59:58
ThE0ReTiC
Я не очень понял смысла вот этой процедуры
copy($HTTP_POST_FILES["filez"][\'tmp_name\'],$HTTP_SERVER_VARS["DOCUMENT_ROOT"]."/test/".$HTTP_POST_FILES[filez][\'name\']);

Почему нельзя считать сразу из темпа?
Название: Файлы на почту аттачем через форму
Отправлено: ThE0ReTiC от 06 Сентября 2002, 12:12:51
RomikChef
Абсолютно прав.
Конечно можно. Даже нужно.
Просто это было написано примерно 420 лет назад, и сейчас я совсем другим классом пользуюсь..
Название: Файлы на почту аттачем через форму
Отправлено: ERROR 404 от 06 Сентября 2002, 17:25:11
ThE0ReTiC
Один фиг как не крутил  - и так и сяк - шлет пустой файл хоть убей :(
Название: Файлы на почту аттачем через форму
Отправлено: Dm от 06 Сентября 2002, 17:30:38
ERROR 404
во-первых, посмотри, в каком виде они доходят до сервера, а потом посмотри отправку. Ошибку нужно локализовать.
Название: Файлы на почту аттачем через форму
Отправлено: ThE0ReTiC от 06 Сентября 2002, 18:12:38
ERROR 404
У тебя Апач часом не русский?
Название: Файлы на почту аттачем через форму
Отправлено: ERROR 404 от 06 Сентября 2002, 18:25:17
Dm
До сервера они вообще не доходят (т.е в каталог test ничего не падает), на мыло приходит только название файла.расширение само-собой 0 bytes.

ThE0ReTiC


Цитировать
У тебя Апач часом не русский?

Нет.
Цитировать
и сейчас я совсем другим классом пользуюсь..

Можно полюбопытствовать каким?
Название: Файлы на почту аттачем через форму
Отправлено: ThE0ReTiC от 06 Сентября 2002, 18:36:33
ERROR 404
Да практически тоже самое.
Я только убрал вычитку данных из файла внутрь класса...
Название: Файлы на почту аттачем через форму
Отправлено: Доктор от 06 Сентября 2002, 20:18:04
Цитировать
До сервера они вообще не доходят


В форме enctype=multipart/form-data и method=post стоит?
Название: Файлы на почту аттачем через форму
Отправлено: Меняздесьдавнонет от 06 Сентября 2002, 20:35:29
и MAX_FILE_SIZE
Название: Файлы на почту аттачем через форму
Отправлено: ERROR 404 от 09 Сентября 2002, 09:25:39
В том-то и дело что все стоит как надо, поэтому я и обескуражен :(
Название: Файлы на почту аттачем через форму
Отправлено: Меняздесьдавнонет от 09 Сентября 2002, 09:38:33
а как ты проверяешь, что "До сервера они вообще не доходят"?
С чего ты взял, что падать долджны в test?
Название: Файлы на почту аттачем через форму
Отправлено: Dm от 09 Сентября 2002, 23:57:32
ERROR 404
все-таки попробуй использовать заведомо рабочий пример upload\'а из: http://www.php.net/manual/en/features.file-upload.php И что из этого получится у тебя? с error_reporting(E_ALL);
Название: Файлы на почту аттачем через форму
Отправлено: Walking around от 10 Сентября 2002, 11:18:10
А он с удаленного сервера фаилы слать будет?
ну, если в "что слать" указать путь http://lala.ru/file.zip
Название: Файлы на почту аттачем через форму
Отправлено: ERROR 404 от 10 Сентября 2002, 16:47:35
RomikChef
$file_name = $HTTP_SERVER_VARS["DOCUMENT_ROOT"].\'/test/\'.$HTTP_POST_FILES[filez][\'name\'];
Название: Файлы на почту аттачем через форму
Отправлено: Меняздесьдавнонет от 10 Сентября 2002, 20:00:36
КОШМАРРРРРРРРР!!!!!!!!!!!!!!!!!!!
Ну, ты бы хоть прочел бы сначала, что эти переменные означают!!!!
Во-первых, вот это

$HTTP_SERVER_VARS["DOCUMENT_ROOT"].\'/test/\'.
надо вообще выбросить на помойку.

Во-вторых, прочесть вот это:

$_FILES[\'userfile\'][\'name\']
Имя файла на клиентской машине.
$_FILES[\'userfile\'][\'type\']
Mime type файла, если бровзер provided this information. Например, "image/gif".
$_FILES[\'userfile\'][\'size\']
Размер загруженного файла в байтах.
$_FILES[\'userfile\'][\'tmp_name\']
Временное имя, под которым файл был сохранен на сервере.
$_FILES[\'userfile\'][\'error\']
Сообщение об ошибке, если такая возникла при загрузке файла. [\'error\'] Была добавлена PHP 4.2.0
Замечание: В версиях PHP меньше, чем 4.1.0, Этот массив называется$HTTP_POST_FILES и он не является автоглобальным, как $_FILES. PHP3 не поддерживает $HTTP_POST_FILES.

Внимательно прочесть!
И обращаться именно к той переменной, в которая тебе нужна, а не к той, которую тебе гадалка в детстве нагадала!
Название: Файлы на почту аттачем через форму
Отправлено: ERROR 404 от 11 Сентября 2002, 14:52:05
RomikChef
Сенькс!