Регистрация
Регистрируясь, вы подтверждаете свое согласие с соглашением об использовании персональных данных.
Восстановление пароля

как проверить наличие файла

24.06.2010, 00:52
Гость
Гость

С сайта должно отправляться письмо с вложенным файлом. Не получается проверить наличие файла. Если файл не вкладывался, то у меня откуда-то образуется .dat.

Код:
opt($DOCUMENT_ROOT.$f_Attachment, $mailer->attachFile($DOCUMENT_ROOT.$f_Attachment_url, $f_Attachment[name], "application/octet-stream"));


или второй вариант
Код:
if(File_Exists($DOCUMENT_ROOT.$f_Attachment)){
$mailer->attachFile($DOCUMENT_ROOT.$f_Attachment_url, $f_Attachment[name], "application/octet-stream");
}
24.06.2010, 08:34
malich
Андрей Малков

Зарегистрирован:
2005-08-09
Сообщений: 522

А в чем у вас собственно проблема? Первый вариант не рабочий так как условие всегда будет верным.

По сути информация о файле хранится в БД, вам нужно проверить есть ли переменная содержащая путь до файла. Проверять физическое наличие файла большого смысла нет.

Не уверен но File_Exists может не работать если вы используете защищенную файловую систему, так как файлы хранятся на сервере без расширения.

К тому же если вы пишите этот код в действии после добавления $f_Attachment будет всегда верно, вне зависимости от того есть файл или нет, так как это массив значений

Пишите просто:
Код:
".opt($f_Attachment_url,"....")."

if($f_Attachment_url){
......
}

А вернее будет:
Код:
".opt($_FILES[f_Attachment][size]!=0 && $_FILES[f_Attachment][type]!='',"....")."

if($_FILES[f_Attachment][size]!=0 && $_FILES[f_Attachment][type]!=''){
......
}
24.06.2010, 11:25
Гость
Гость

почему-то это не срабатывает:

Код:
opt($_FILES[f_Attachment][size]!=0 && $_FILES[f_Attachment][type]!='', $mailer->attachFile($DOCUMENT_ROOT.$f_Attachment_url, $f_Attachment[name], "application/octet-stream"));


все равно присоединяется файл .dat 73 байт
24.06.2010, 11:44
Гость
Гость

может у меня команда вложения внутри opt написана неверно?
если беру в "", выдается ошибка
24.06.2010, 12:12
malich
Андрей Малков

Зарегистрирован:
2005-08-09
Сообщений: 522

opt использовать нельзя php код внутри него выполняется в любом случае (забыл совсем). opt и opt_case желательно использовать только для вывода контента.

В вашем случае использовать opt вообще нет смысла, он используется в макетах дизайна, префиксе, объекте в списке, суфиксе и полном выводе объекта. В php коде используйте конструкцию if
Код:
if($_FILES[f_Attachment][size]!=0 && $_FILES[f_Attachment][type]!=''){
......
}

или
Код:
".($_FILES[f_Attachment][size]!=0 && $_FILES[f_Attachment][type]!=''?"...": NULL )."
198 196 2010-06-24 12:12:56 10548
Описание проекта