Hallo,
ich möchte über die xform ermöglichen, Bilder hochzuladen. Dies funktioniert soweit, allerdings werden die Bilder in den Medienpool gespeichert, ich hätte sie aber gerne in der email als Anlage...
Hat jemand nen Tipp dazu?
Liebe Grüsse
Tom
Hallo,
Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.
Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.
Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Dateiupload per Email erhalten
------------------------------------------------
rotzek - Werbung, Hosting und IT
www.rotzek.de
------------------------------------------------
rotzek - Werbung, Hosting und IT
www.rotzek.de
------------------------------------------------
Heu Zsämme!
hier kommt der erste Work-Around damit xForm eine Datei als Mail-Anhang versendet:
Voraussetzung: phpMailer und xForms läuft
3 Schritte sind notwendig:
1. tmp Verzeichnis im Order /files/ anlegen
2. editieren von /redaxo/include/addons/xform/classes/value/class.xform.mediafile.inc.php
3. editieren von /redaxo/include/addons/xform/classes/action/class.xform.action_email.inc.php
Das war's - Bsp-Verwendung in xForm mit:
mediafile|attachment|Anlage zur Mail|1000|.pdf,.txt,.doc|pflicht=1|Fehlermeldung|[no_db]|0|true
Und jetzt seid ihr dran:
/redaxo/include/addons/xform/classes/value/class.xform.mediafile.inc.php
* noch einen Parameter hinzusetzen der bestimmt, ob das File an die Mail angehängt wird oder in den Medienpool verschoben werden soll:
* den Aufruf von saveMedia verhindern wenn die Datei als attachement gesendet werden soll --> function enterObject ca. Zeile 40 :
* und Fehler vermeiden - das elseif einfügen:
nächste Datei
/redaxo/include/addons/xform/classes/action/class.xform.action_email.inc.php
- nicht verwirren lassen; dieser Code ersetzt z.B. ###email### auch im Betreff und EMailFrom Feld
- global $REX einfügen
- function attachFile() hinzugefügt
- Filedaten aus dem $_FILESArray geholt
Viel Spass!
Grüße
Andreas~
hier kommt der erste Work-Around damit xForm eine Datei als Mail-Anhang versendet:
Voraussetzung: phpMailer und xForms läuft
3 Schritte sind notwendig:
1. tmp Verzeichnis im Order /files/ anlegen
2. editieren von /redaxo/include/addons/xform/classes/value/class.xform.mediafile.inc.php
3. editieren von /redaxo/include/addons/xform/classes/action/class.xform.action_email.inc.php
Das war's - Bsp-Verwendung in xForm mit:
mediafile|attachment|Anlage zur Mail|1000|.pdf,.txt,.doc|pflicht=1|Fehlermeldung|[no_db]|0|true
Und jetzt seid ihr dran:
/redaxo/include/addons/xform/classes/value/class.xform.mediafile.inc.php
* noch einen Parameter hinzusetzen der bestimmt, ob das File an die Mail angehängt wird oder in den Medienpool verschoben werden soll:
Code: Alles auswählen
function getDescription()
{
return "mediafile -> Beispiel: mediafile|label|Bezeichnung|groesseinkb|endungenmitpunktmitkommasepariert|pflicht=1|Fehlermeldung|[no_db]|mediacatid|asMailAttachmend=true/false";
}
Code: Alles auswählen
if ($this->elements[9] != true)
{
$NEWFILE = $this->saveMedia($FILE,$REX["INCLUDE_PATH"]."/../../files/",$extensions_array,$mediacatid);
}
Code: Alles auswählen
if ($NEWFILE["ok"])
{
$this->value = $NEWFILE['filename'];
}
elseif ($this->elements[9] == true)
{
$this->value = $FILE["name"];
// $this->value['attachement']['name'] = $FILE["name"];
}
else
{
$this->value = "";
$this->elements[5] = 1; // auf "error message true" setzen, wenn datei fehlerhaft
}
/redaxo/include/addons/xform/classes/action/class.xform.action_email.inc.php
- nicht verwirren lassen; dieser Code ersetzt z.B. ###email### auch im Betreff und EMailFrom Feld
- global $REX einfügen
- function attachFile() hinzugefügt
- Filedaten aus dem $_FILESArray geholt
Code: Alles auswählen
<?php
class rex_xform_action_email extends rex_xform_action_abstract
{
function execute()
{
global $REX;
$mail_from = $this->action["elements"][2];
foreach ($this->elements_email as $search => $replace)
{
$mail_from = str_replace('###'. $search .'###', $replace, $mail_from);
}
$mail_to = $this->action["elements"][3];
$mail_subject = $this->action["elements"][4];
foreach ($this->elements_email as $search => $replace)
{
$mail_subject = str_replace('###'. $search .'###', $replace, $mail_subject);
}
$mail_body = $this->action["elements"][5];
foreach ($this->elements_email as $search => $replace)
{
$mail_body = str_replace('###'. $search .'###', $replace, $mail_body);
}
/*
* Welche Dateien dürfen im Anhang versendet werden
* wenn count($extensions_array) = 0 --> dann wird ein Standard (".rtf",".pdf",".doc",".docx",".gif",".jpg",".jpeg",".txt" ) verwendet
*/
$extensions_array = array(); // bsp: array(".gif",".jpg",".jpeg")
$FILE["size"] = array_shift($_FILES["FORM"]["size"][$this->params["form_name"]]);
$FILE["name"] = array_shift($_FILES["FORM"]["name"][$this->params["form_name"]]);
$FILE["type"] = array_shift($_FILES["FORM"]["type"][$this->params["form_name"]]);
$FILE["tmp_name"] = array_shift($_FILES["FORM"]["tmp_name"][$this->params["form_name"]]);
$FILE["error"] = array_shift($_FILES["FORM"]["error"][$this->params["form_name"]]);
if ($FILE["error"] === UPLOAD_ERR_OK)
$NEWFILE = $this->attachFile($FILE, $REX["INCLUDE_PATH"]."/../../files/tmp/",$extensions_array);
$mail = new rex_mailer();
$mail->AddAddress($mail_to, $mail_to);
$mail->WordWrap = 80;
$mail->FromName = $mail_from;
$mail->From = $mail_from;
$mail->Subject = $mail_subject;
$mail->Body = nl2br($mail_body);
$mail->AltBody = strip_tags($mail_body);
$mail->AddAttachment($REX["INCLUDE_PATH"]."/../../files/tmp/".$NEWFILE['filename'] );
// $mail->IsHTML(true);
$mail->Send();
/*
* Aufräumen
*/
@unlink($REX["INCLUDE_PATH"]."/../../files/tmp/".$NEWFILE['filename']);
}
function getDescription()
{
return "action|email|from@email.de|to@emila.de|Mailsubject|Mailbody###name###";
}
function attachFile($FILE,$filefolder,$extensions_array = array())
{
global $REX,$REX_USER;
$FILENAME = $FILE['name'];
$FILESIZE = $FILE['size'];
$FILETYPE = $FILE['type'];
$NFILENAME = "";
$message = '';
// ----- neuer filename und extension holen
$NFILENAME = strtolower(preg_replace("/[^a-zA-Z0-9.\-\$\+]/","_",$FILENAME));
if (strrpos($NFILENAME,".") != "")
{
$NFILE_NAME = substr($NFILENAME,0,strlen($NFILENAME)-(strlen($NFILENAME)-strrpos($NFILENAME,".")));
$NFILE_EXT = substr($NFILENAME,strrpos($NFILENAME,"."),strlen($NFILENAME)-strrpos($NFILENAME,"."));
}else
{
$NFILE_NAME = $NFILENAME;
$NFILE_EXT = "";
}
// ---- ext checken
$ERROR_EXT = array(".php",".php3",".php4",".php5",".phtml","---",".asp",".aspx",".cfm");
if (in_array($NFILE_EXT,$ERROR_EXT))
{
$NFILE_NAME .= $NFILE_EXT;
$NFILE_EXT = ".txt";
}
$standard_extensions_array = array(".rtf",".pdf",".doc",".docx",".gif",".jpg",".jpeg",".txt");
if (count($extensions_array) == 0) $extensions_array = $standard_extensions_array;
if (!in_array($NFILE_EXT,$extensions_array))
{
$RETURN = FALSE;
$RETURN['ok'] = FALSE;
return $RETURN;
}
$NFILENAME = $NFILE_NAME.$NFILE_EXT;
// ----- datei schon vorhanden -> namen aendern -> _1 ..
if (file_exists($filefolder."/$NFILENAME"))
{
for ($cf=1;$cf<1000;$cf++)
{
$NFILENAME = $NFILE_NAME."_$cf"."$NFILE_EXT";
if (!file_exists($filefolder."/$NFILENAME")) break;
}
}
// ----- dateiupload
$upload = true;
if(!move_uploaded_file($FILE['tmp_name'],$filefolder."/$NFILENAME") )
{
if (!copy($FILE['tmp_name'],$filefolder."/$NFILENAME"))
{
$message .= "move file $NFILENAME failed | ";
$RETURN = FALSE;
$RETURN['ok'] = FALSE;
return $RETURN;
}
}
chmod($filefolder."/$NFILENAME", $REX['FILEPERM']);
$RETURN['type'] = $FILETYPE;
$RETURN['msg'] = $message;
$RETURN['ok'] = TRUE;
$RETURN['filename'] = $NFILENAME;
return $RETURN;
}
}
?>
Grüße
Andreas~
Zuletzt geändert von Andreas07 am 24. Sep 2009, 12:02, insgesamt 4-mal geändert.
~~~~~~~~~~~~~~~~~
make your own webular.de
~~~~~~~~~~~~~~~~~
make your own webular.de
~~~~~~~~~~~~~~~~~
-
- Beiträge: 1371
- Registriert: 4. Aug 2006, 14:06
- Wohnort: Rheinberg
- Kontaktdaten: Website Twitter
Eine Umsetzung für do form! ist auch in Vorbereitung.
Mehr Infos im SVN von KOALA:
http://svn.origo.ethz.ch/wsvn/rex-dofor ... orm2_trunk_
http://rex-doform2.origo.ethz.ch/wiki/rex_doform2
Mehr Infos im SVN von KOALA:
http://svn.origo.ethz.ch/wsvn/rex-dofor ... orm2_trunk_
http://rex-doform2.origo.ethz.ch/wiki/rex_doform2
- brandes-webdesign
- Beiträge: 91
- Registriert: 24. Jan 2008, 15:22
- Wohnort: Trier
- Kontaktdaten: Website
Moin Andreas07,
klasse Lösung und Anleitung !!!
Klappt bei mir auch alles so weit, nur wenn ich zwei (oder mehr) Anhänge verschicken möchte, wird immer nur der erste Anhang berücksichtigt/mitgeschickt.
Hast Du dieses Problem auch ?
Viele Grüße
Mirco Brandes
klasse Lösung und Anleitung !!!
Klappt bei mir auch alles so weit, nur wenn ich zwei (oder mehr) Anhänge verschicken möchte, wird immer nur der erste Anhang berücksichtigt/mitgeschickt.
Hast Du dieses Problem auch ?
Viele Grüße
Mirco Brandes
Responive Umsetzung Ihrer Layout-/Design-Vorlagen mit dem CMS Redaxo.
Service für Agenturen, Grafiker und Web-Designer oder im Kundenauftrag.
Mirco Brandes (Brandes Webdesign)
Service für Agenturen, Grafiker und Web-Designer oder im Kundenauftrag.
Mirco Brandes (Brandes Webdesign)
Bezügl. XForm allgemein: die wirklich vernünftige Lösung wäre, wenn jemand die passenden Klassen schreibt.. die Standard email action ist halt nicht dafür vorgesehen mit attachments umzugehen.. etnweder man erweitert die, oder - besser imho - schreibt eine eigene.
Bezügl. PHPMailer sind die beiden Funktionen AddAttachment() bzw. AddStringAttachment() das was man verwenden will..
hth,
Jan
Bezügl. PHPMailer sind die beiden Funktionen AddAttachment() bzw. AddStringAttachment() das was man verwenden will..
hth,
Jan
vg, Jan
Re: Dateiupload per Email erhalten
Hi,
hab den workaround von Andreas007 bei einer älteren Redaxo 4.1 mal eingebastelt
Nur leider erhalte ich in der Email "nur" den Dateinamen, hab ich was übersehen?
im Modul:
mediafile|attachment|Anlage zur Mail|1000||1|Falsche Datei hochgeladen|[no_db]|0|true
###attachment### (xform template)
files/tmp/ ist vorhanden und beschreibbar.
xform/classes/action/class.xform.action_email.inc.php:
xform/classes/value/class.xform.mediafile.inc.php
phpmailer ist aktiv und Mailertype: mail
??? Danke. grz. Chris
hab den workaround von Andreas007 bei einer älteren Redaxo 4.1 mal eingebastelt
Nur leider erhalte ich in der Email "nur" den Dateinamen, hab ich was übersehen?
im Modul:
mediafile|attachment|Anlage zur Mail|1000||1|Falsche Datei hochgeladen|[no_db]|0|true
###attachment### (xform template)
files/tmp/ ist vorhanden und beschreibbar.
xform/classes/action/class.xform.action_email.inc.php:
Code: Alles auswählen
<?php
class rex_xform_action_email extends rex_xform_action_abstract
{
function execute()
{
global $REX;
$mail_from = $this->action["elements"][2];
foreach ($this->elements_email as $search => $replace)
{
$mail_from = str_replace('###'. $search .'###', $replace, $mail_from);
}
$mail_to = $this->action["elements"][3];
$mail_subject = $this->action["elements"][4];
foreach ($this->elements_email as $search => $replace)
{
$mail_subject = str_replace('###'. $search .'###', $replace, $mail_subject);
}
$mail_body = $this->action["elements"][5];
foreach ($this->elements_email as $search => $replace)
{
$mail_body = str_replace('###'. $search .'###', $replace, $mail_body);
}
/*
* Welche Dateien dürfen im Anhang versendet werden
* wenn count($extensions_array) = 0 --> dann wird ein Standard (".rtf",".pdf",".doc",".docx",".gif",".jpg",".jpeg",".txt" ) verwendet
*/
$extensions_array = array(); // bsp: array(".gif",".jpg",".jpeg")
$FILE["size"] = array_shift($_FILES["FORM"]["size"][$this->params["form_name"]]);
$FILE["name"] = array_shift($_FILES["FORM"]["name"][$this->params["form_name"]]);
$FILE["type"] = array_shift($_FILES["FORM"]["type"][$this->params["form_name"]]);
$FILE["tmp_name"] = array_shift($_FILES["FORM"]["tmp_name"][$this->params["form_name"]]);
$FILE["error"] = array_shift($_FILES["FORM"]["error"][$this->params["form_name"]]);
if ($FILE["error"] === UPLOAD_ERR_OK)
$NEWFILE = $this->attachFile($FILE, $REX["INCLUDE_PATH"]."/../../files/tmp/",$extensions_array);
$mail = new rex_mailer();
$mail->AddAddress($mail_to, $mail_to);
$mail->WordWrap = 80;
$mail->FromName = $mail_from;
$mail->From = $mail_from;
$mail->Subject = $mail_subject;
$mail->Body = nl2br($mail_body);
$mail->AltBody = strip_tags($mail_body);
$mail->AddAttachment($REX["INCLUDE_PATH"]."/../../files/tmp/".$NEWFILE['filename'] );
// $mail->IsHTML(true);
$mail->Send();
/*
* Aufräumen
*/
@unlink($REX["INCLUDE_PATH"]."/../../files/tmp/".$NEWFILE['filename']);
}
function getDescription()
{
return "action|email|from@email.de|to@email.de|Mailsubject|Mailbody###name###";
}
function attachFile($FILE,$filefolder,$extensions_array = array())
{
global $REX,$REX_USER;
$FILENAME = $FILE['name'];
$FILESIZE = $FILE['size'];
$FILETYPE = $FILE['type'];
$NFILENAME = "";
$message = '';
// ----- neuer filename und extension holen
$NFILENAME = strtolower(preg_replace("/[^a-zA-Z0-9.\-\$\+]/","_",$FILENAME));
if (strrpos($NFILENAME,".") != "")
{
$NFILE_NAME = substr($NFILENAME,0,strlen($NFILENAME)-(strlen($NFILENAME)-strrpos($NFILENAME,".")));
$NFILE_EXT = substr($NFILENAME,strrpos($NFILENAME,"."),strlen($NFILENAME)-strrpos($NFILENAME,"."));
}else
{
$NFILE_NAME = $NFILENAME;
$NFILE_EXT = "";
}
// ---- ext checken
$ERROR_EXT = array(".php",".php3",".php4",".php5",".phtml","---",".asp",".aspx",".cfm");
if (in_array($NFILE_EXT,$ERROR_EXT))
{
$NFILE_NAME .= $NFILE_EXT;
$NFILE_EXT = ".txt";
}
$standard_extensions_array = array(".rtf",".pdf",".doc",".docx",".gif",".jpg",".jpeg",".txt");
if (count($extensions_array) == 0) $extensions_array = $standard_extensions_array;
if (!in_array($NFILE_EXT,$extensions_array))
{
$RETURN = FALSE;
$RETURN['ok'] = FALSE;
return $RETURN;
}
$NFILENAME = $NFILE_NAME.$NFILE_EXT;
// ----- datei schon vorhanden -> namen aendern -> _1 ..
if (file_exists($filefolder."/$NFILENAME"))
{
for ($cf=1;$cf<1000;$cf++)
{
$NFILENAME = $NFILE_NAME."_$cf"."$NFILE_EXT";
if (!file_exists($filefolder."/$NFILENAME")) break;
}
}
// ----- dateiupload
$upload = true;
if(!move_uploaded_file($FILE['tmp_name'],$filefolder."/$NFILENAME") )
{
if (!copy($FILE['tmp_name'],$filefolder."/$NFILENAME"))
{
$message .= "move file $NFILENAME failed | ";
$RETURN = FALSE;
$RETURN['ok'] = FALSE;
return $RETURN;
}
}
chmod($filefolder."/$NFILENAME", $REX['FILEPERM']);
$RETURN['type'] = $FILETYPE;
$RETURN['msg'] = $message;
$RETURN['ok'] = TRUE;
$RETURN['filename'] = $NFILENAME;
return $RETURN;
}
}
?>
Code: Alles auswählen
<?php
// TODO:
// Check ob Datei vorhanden..
class rex_xform_mediafile extends rex_xform_abstract
{
function enterObject(&$email_elements,&$sql_elements,&$warning,&$form_output,$send = 0)
{
global $REX;
if ($this->elements[8] == "") $mediacatid = 0;
else $mediacatid = (int) $this->elements[8];
$maxsize = (int) $this->elements[3]*1000;
if ($maxsize == 0) $maxsize = 50000; // 50 kb
// Größencheck
if ($send && $_FILES["FORM"]["size"][$this->params["form_name"]]["el_".$this->id] != "" && $_FILES["FORM"]["size"][$this->params["form_name"]]["el_".$this->id]>$maxsize)
{
$_FILES["FORM"]["name"][$this->params["form_name"]]["el_".$this->id] = "";
$this->value = "";
$this->elements[5] = 1; // auf "error message true" setzen, wenn datei fehlerhaft
}
if ($send)
{
if ($_FILES["FORM"]["name"][$this->params["form_name"]]["el_".$this->id] != "")
{
$FILE["size"] = $_FILES["FORM"]["size"][$this->params["form_name"]]["el_".$this->id];
$FILE["name"] = $_FILES["FORM"]["name"][$this->params["form_name"]]["el_".$this->id];
$FILE["type"] = $_FILES["FORM"]["type"][$this->params["form_name"]]["el_".$this->id];
$FILE["tmp_name"] = $_FILES["FORM"]["tmp_name"][$this->params["form_name"]]["el_".$this->id];
$FILE["error"] = $_FILES["FORM"]["error"][$this->params["form_name"]]["el_".$this->id];
$extensions_array = explode(",",$this->elements[4]);
// $NEWFILE = $this->saveMedia($FILE,$REX["INCLUDE_PATH"]."/../../files/",$extensions_array,$mediacatid);
if ($this->elements[9] != true) {
$NEWFILE = $this->saveMedia($FILE,$REX["INCLUDE_PATH"]."/../../files/",$extensions_array,$mediacatid);
}
/*
if ($NEWFILE["ok"])
{
$this->value = $NEWFILE['filename'];
}else
{
$this->value = "";
$this->elements[5] = 1; // auf "error message true" setzen, wenn datei fehlerhaft
}
*/
if ($NEWFILE["ok"]) {
$this->value = $NEWFILE['filename'];
}
elseif ($this->elements[9] == true)
{
$this->value = $FILE["name"];
// $this->value['attachement']['name'] = $FILE["name"];
}
else
{
$this->value = "";
$this->elements[5] = 1; // auf "error message true" setzen, wenn datei fehlerhaft
}
}
}
if ($send)
{
if ($this->value == "" &&
$_REQUEST["FORM"][$this->params["form_name"]]['el_'.$this->id.'_filename'] != "" &&
$_REQUEST["FORM"][$this->params["form_name"]]['el_'.$this->id.'_delete'] != 1)
{
$this->value = $_REQUEST["FORM"][$this->params["form_name"]]['el_'.$this->id.'_filename'];
}
$email_elements[$this->elements[1]] = stripslashes($this->value);
if ($this->elements[7] != "no_db") $sql_elements[$this->elements[1]] = $this->value;
}
$tmp = "";
$check_delete = "";
if ($this->value != "")
{
$this->elements[2] .= '<br />Dateiname: <a href="files/'.$this->value.'">'.$this->value.'</a>';
$check_delete = '
<p class="formmcheckbox">
<input id="el_'.$this->id.'_delete" type="checkbox" name="FORM['.$this->params["form_name"].'][el_'.$this->id.'_delete]" value="1" />
<label for="el_' . $this->id . '_delete">Datei löschen</label>
</p>
';
// $this->elements[2] = "";
}
if ($send && $this->elements[5]==1 && $this->value=="")
{
$warning["el_" . $this->id] = $this->params["error_class"];
$this->params["warning_messages"][] = $this->elements[6];
}
$out .= '
<input type="hidden" name="FORM['.$this->params["form_name"].'][el_'.$this->id.'_filename]" value="'.$this->value.'" />
<p class="formfile">
<label class="text ' . $warning["el_" . $this->id] . '" for="el_' . $this->id . '" >' . $this->elements[2] . '</label>
<input class="uploadbox clickmedia '.$warning["el_".$this->id].'" id="el_'.$this->id.'" name="FORM['.$this->params["form_name"].'][el_'.$this->id.']" type="file" />
</p>'.$check_delete;
$form_output[] = $out;
}
/*
function getDescription()
{
return "mediafile -> Beispiel: mediafile|label|Bezeichnung|groesseinkb|endungenmitpunktmitkommasepariert|pflicht=1|Fehlermeldung|[no_db]|mediacatid";
}
*/
function getDescription()
{
return "mediafile -> Beispiel: mediafile|label|Bezeichnung|groesseinkb|endungenmitpunktmitkommasepariert|pflicht=1|Fehlermeldung|[no_db]|mediacatid|asMailAttachmend=true/false";
}
function postAction($email_elements,$sql_elements)
{
}
function saveMedia($FILE,$filefolder,$extensions_array,$rex_file_category){
global $REX,$REX_USER;
$FILENAME = $FILE['name'];
$FILESIZE = $FILE['size'];
$FILETYPE = $FILE['type'];
$NFILENAME = "";
$message = '';
// ----- neuer filename und extension holen
$NFILENAME = strtolower(preg_replace("/[^a-zA-Z0-9.\-\$\+]/","_",$FILENAME));
if (strrpos($NFILENAME,".") != "")
{
$NFILE_NAME = substr($NFILENAME,0,strlen($NFILENAME)-(strlen($NFILENAME)-strrpos($NFILENAME,".")));
$NFILE_EXT = substr($NFILENAME,strrpos($NFILENAME,"."),strlen($NFILENAME)-strrpos($NFILENAME,"."));
}else
{
$NFILE_NAME = $NFILENAME;
$NFILE_EXT = "";
}
// ---- ext checken
$ERROR_EXT = array(".php",".php3",".php4",".php5",".phtml","---",".asp",".aspx",".cfm");
if (in_array($NFILE_EXT,$ERROR_EXT))
{
$NFILE_NAME .= $NFILE_EXT;
$NFILE_EXT = ".txt";
}
$standard_extensions_array = array(".rtf",".pdf",".doc",".gif",".jpg",".jpeg");
if (count($extensions_array) == 0) $extensions_array = $standard_extensions_array;
if (!in_array($NFILE_EXT,$extensions_array))
{
$RETURN = FALSE;
$RETURN['ok'] = FALSE;
return $RETURN;
}
$NFILENAME = $NFILE_NAME.$NFILE_EXT;
// ----- datei schon vorhanden -> namen aendern -> _1 ..
if (file_exists($filefolder."/$NFILENAME"))
{
for ($cf=1;$cf<1000;$cf++)
{
$NFILENAME = $NFILE_NAME."_$cf"."$NFILE_EXT";
if (!file_exists($filefolder."/$NFILENAME")) break;
}
}
// ----- dateiupload
$upload = true;
if(!move_uploaded_file($FILE['tmp_name'],$filefolder."/$NFILENAME") )
{
if (!copy($FILE['tmp_name'],$filefolder."/$NFILENAME"))
{
$message .= "move file $NFILENAME failed | ";
$RETURN = FALSE;
$RETURN['ok'] = FALSE;
return $RETURN;
}
}
chmod($filefolder."/$NFILENAME", $REX['FILEPERM']);
$RETURN['type'] = $FILETYPE;
$RETURN['msg'] = $message;
$RETURN['ok'] = TRUE;
$RETURN['filename'] = $NFILENAME;
$FILESQL = new sql;
// $FILESQL->debugsql=1;
$FILESQL->setTable($REX['TABLE_PREFIX']."file");
$FILESQL->setValue("filetype",$FILETYPE);
$FILESQL->setValue("filename",$NFILENAME);
$FILESQL->setValue("originalname",$FILENAME);
$FILESQL->setValue("filesize",$FILESIZE);
$FILESQL->setValue("category_id",$rex_file_category);
$FILESQL->setValue("createdate",time());
$FILESQL->setValue("createuser","system");
$FILESQL->setValue("updatedate",time());
$FILESQL->setValue("updateuser","system");
$FILESQL->insert();
return $RETURN;
}
}
?>
??? Danke. grz. Chris
Re: Dateiupload per Email erhalten
hmm.. die Datei landet auch schön im /files/tmp ... und wird anschl. (unlink) gelöscht ...
nur der Anhang kommt nicht mit ... *grübel* ...
Jemand eine Idee ...?
nur der Anhang kommt nicht mit ... *grübel* ...
Jemand eine Idee ...?
Code: Alles auswählen
[attachment] => Array
(
[0] => Array
(
[0] => blabla/redaxo/include/../../files/tmp/myfile.jpg
[1] => myfile.jpg
[2] => myfile.jpg
[3] => base64
[4] => application/octet-stream
[5] =>
[6] => attachment
[7] => 0
)
)
Re: Dateiupload per Email erhalten
Oder gar zu früh? Ich würde an dieser Stelle mal folgendes durchprobieren:darwin hat geschrieben:hmm.. die Datei landet auch schön im /files/tmp ... und wird anschl. (unlink) gelöscht ...
1. Test mit $irgendeiner statischen Datei aus dem fs..
2. Test mit nem string und addStringAttchment()..
3. Direkt mit PHPmailer anstatt rex_mailer..
lg,
j.
vg, Jan