2012-08-03 2 views
6

Ich erstelle ein einfaches Formular, mit dem Benutzer eine Datei "hochladen" können, und ein Kommentarfeld. nach dem Benutzer wählen Sie die Datei (kann Bild oder PDF sein) und klicken Sie auf Absenden, ich werde nicht die Datei in meinem Web-Server speichern, wird die Datei in eine E-Mail eingefügt werden und an mich senden.E-Mail mit Anhang in PHP senden, ohne die Datei auf Webserver zu speichern

Meine Frage ist: Wie kann ich die Datei ohne Speichern an einem beliebigen Ort befestigen.

Ich möchte kein Modul von Drittanbietern verwenden.

Update:

$attachment = $_FILES["OrderList"]["tmp_name"]; 
$content = file_get_contents($attachment); 
$content = chunk_split(base64_encode($content)); 

Ich habe einen Fehler:

Filename cannot be empty in C:\dir\orders\upload.php on line 24

Linie 24 ist $content = file_get_contents($attachment);

+1

hochladen, fügen Sie es, es senden, es löschen. – Matt

+0

Wie wäre es, speichern Sie es vorübergehend und löschen Sie es dann – amitchhajer

+0

PHP speichert die hochgeladene Datei in einem tmp-Verzeichnis, bevor das Skript überhaupt beginnt, so dass Sie die Datei nicht im Dateisystem speichern können. –

Antwort

3

Sie haben es bereits gespeichert, wenn Sie die Datei-Upload von PHP akzeptieren.

Verwenden Sie es einfach, wenn es im Ordner tmp gespeichert ist.

PHP wird automatisch für Sie löschen, wenn Ihr Skript endet.

+0

aber wenn ich '$ attachment = $ _FILES [" OrderList "] [" tmp_name "]; $ content = file_get_contents ($ attachment); $ content = chunk_split (base64_encode ($ content)); ' Ich habe einen Fehler bekommen: Dateiname darf nicht leer sein in file_get_contents – triston

+0

Hast du $ attachment geantwortet? Was hat es gesagt? Führen Sie Ihr Code-Snippet aus dem Skript aus, das beim Hochladen hochgeladen wird? –

+0

Ich habe es behoben, indem ich das tmp_dir in php.ini hinzufüge, das späteste php (neuer als 5.3) nicht das Standardtmp_dir. Danke vielmals. – triston

0

Durch das Hochladen einer Datei wird es auf Ihrem Server in Temp Verzeichnis gespeichert. Die Ausnahme ist die PUT-Methode. In diesem Fall wird die Datei direkt über php: // input gesendet. Danach können Sie eine PHP-Mailing-Bibliothek verwenden, die Sie bevorzugen.

PHP manual for PUT'ing files

3

Heute lief ich in ähnliche Situation und eine Lösung gefunden, so ist es hier

ist es
if ($_FILES["file"]["error"] > 0) { 
echo "Error: " . $_FILES["file"]["error"] . "<br>"; 
} else { 


$temp = explode(".", $_FILES["file"]["name"]); 
$extension = end($temp); 
$newname= $_FILES["file"]["tmp_name"].".".$extension; 
rename($_FILES["file"]["tmp_name"],$newname); 
$attachments = array($newname); 

    wp_mail('emailto send', 'title', 'message','',$attachments); 
} 
+0

Ja, Sie haben Recht ..! Dies ist der einfachste Weg. Wenn Sie den ursprünglichen Dateinamen behalten möchten, würden Sie die Umbenennung wie folgt ändern: umbenennen ($ _ FILES ["file"] ["name"], $ newname); – Invincible