Προς το περιεχόμενο

file attachment μέσα σε php φόρμα


varemarious

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλημέρα .

θέλω να προσθέσω στη φόρμα μου ένα file attachment..

έτσι ώστε κάποιος που θέλει να στείλει ένα αρχείο word ή μια εικόνα να την φορτώνει και

να μου έρχεται στο mail..

 

έχω βρει το παρακάτω κώδικα στην σελίδα

 

http://www.w3schools.com/php/php_file_upload.asp

 

αλλά όταν βάζω το αρχείο μου στέλνει το email δίχως το αρχείο και μου δείχνει αυτό το μήνυμα

 

Upload: test.docx

Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document

Size: 12.2744140625 Kb

Stored in: C:\Windows\Temp\phpED35.tmpInvalid file

 

τι χρειάζεται να κάνω για να το γυρίσω να το στέλνει στο mail. ;

 

ευχαριστώ

Δημοσ.

Καλημέρα .

θέλω να προσθέσω στη φόρμα μου ένα file attachment..

έτσι ώστε κάποιος που θέλει να στείλει ένα αρχείο word ή μια εικόνα να την φορτώνει και

να μου έρχεται στο mail..

 

έχω βρει το παρακάτω κώδικα στην σελίδα

 

http://www.w3schools.com/php/php_file_upload.asp

 

αλλά όταν βάζω το αρχείο μου στέλνει το email δίχως το αρχείο και μου δείχνει αυτό το μήνυμα

 

Upload: test.docx

Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document

Size: 12.2744140625 Kb

Stored in: C:\Windows\Temp\phpED35.tmpInvalid file

 

τι χρειάζεται να κάνω για να το γυρίσω να το στέλνει στο mail. ;

 

ευχαριστώ

Δημοσ.
αλλο attachment και άλλο upload

νομίζω

 

http://www.webcheatsheet.com/PHP/send_email_text_html_attachment.php

 

 

ευχαριστούμε isay

 

.

 

έχω κι εγώ αυτή την αμφιβολία... μεταξύ upload και attachment..

 

δυστυχώς το link σου isay δεν βοήθησε..

 

καθώς μίλησα με τον δημιουργό του και μου είπε ότι δε μπορώ να χρησιμοποιήσω το συγκεκριμένο script...

 

αν έχετε κάποιο άλλο link (που τα έχω σχεδόν εξαντλήσει όλα στο google) και όλα από κάπου χάνουν..τότε καλοδεχούμενο..

Δημοσ.
αλλο attachment και άλλο upload

νομίζω

 

http://www.webcheatsheet.com/PHP/send_email_text_html_attachment.php

 

 

ευχαριστούμε isay

 

.

 

έχω κι εγώ αυτή την αμφιβολία... μεταξύ upload και attachment..

 

δυστυχώς το link σου isay δεν βοήθησε..

 

καθώς μίλησα με τον δημιουργό του και μου είπε ότι δε μπορώ να χρησιμοποιήσω το συγκεκριμένο script...

 

αν έχετε κάποιο άλλο link (που τα έχω σχεδόν εξαντλήσει όλα στο google) και όλα από κάπου χάνουν..τότε καλοδεχούμενο..

Δημοσ.

Το αποτέλεσμα που επιθυμείς είναι ένας συνδυασμός των παραπάνω 2 links (upload + attachement).

Με το upload script ανεβάζεις το αρχείο σου στον Server (το αρχείο βρίσκεται στον temp φάκελο $_FILES["file"]["tmp_name"])

Με file_get_contents ή fopen & fread διαβάζεις το περιεχόμενο του αρχείου το οποίο και εκτυπώνεις στο 2ο script στην θέση του $attachment;

 

Και θα δουλέψει μια χαρά.

 

Ιδιαίτερη σημασία θα πρέπει να δώσεις στο

Content-Type: application/zip; name="attachment.zip"

καθώς θα πρέπει να χρησιμοποιείς το content-type του αρχείου που σου ανεβάσανε από το $_FILES["file"]["type"] αλλά και το name από το $_FILES["file"]["name"].

 

PS: Μπορεί να χρειαστεί να διαγράφεις το αρχείο από το temp location αφού ολοκληρώσεις την αποστολή του mail.

 

Μια mix των 2 script δεν είναι πάνω από 15 λεπτά δουλειά (μαζί με τις δοκιμές).

Δημοσ.
As you can see, sending an email with attachment is easy to accomplish. In the preceding example we have multipart/mixed MIME type, and inside it we have multipart/alternative MIME type that specifies two versions of the email. To include an attachment to our message, we read the data from the specified file into a string, encode it with base64, split it in smaller chunks to make sure that it matches the MIME specifications and then include it as an attachment.

 

δυστυχώς δεν είμαι προγραμματιστής!

http://www.texelate.co.uk/blog/send-email-attachment-with-php/

http://www.theukwebdesigncompany.com/articles/php-file-attachments.php

 

.

Δημοσ.
Το αποτέλεσμα που επιθυμείς είναι ένας συνδυασμός των παραπάνω 2 links (upload + attachement).

Με το upload script ανεβάζεις το αρχείο σου στον Server (το αρχείο βρίσκεται στον temp φάκελο $_FILES["file"]["tmp_name"])

Με file_get_contents ή fopen & fread διαβάζεις το περιεχόμενο του αρχείου το οποίο και εκτυπώνεις στο 2ο script στην θέση του $attachment;

 

Και θα δουλέψει μια χαρά.

 

Ιδιαίτερη σημασία θα πρέπει να δώσεις στο

Content-Type: application/zip; name="attachment.zip"

καθώς θα πρέπει να χρησιμοποιείς το content-type του αρχείου που σου ανεβάσανε από το $_FILES["file"]["type"] αλλά και το name από το $_FILES["file"]["name"].

 

PS: Μπορεί να χρειαστεί να διαγράφεις το αρχείο από το temp location αφού ολοκληρώσεις την αποστολή του mail.

 

Μια mix των 2 script δεν είναι πάνω από 15 λεπτά δουλειά (μαζί με τις δοκιμές).

 

δοκιμάζω αυτό που λές ..

πώς ακριβώς θα ορίσω τη διαδρομή του φακέλου που θα γίνεται upload στο server;

 

το δοκίμασα με http , δεν .

 

με όλη τη διαδρομή D:\vhost\domain_name\httpdocs\......... , δεν

 

δοκίμασα να δώσω μόνο το φάκελο upload\ , δεν,

 

επίσης δίνω δικαιώματα 777 στο φάκελο πάλι , δεν.

 

>Warning: move_uploaded_file(upload/logo.jpeg) [function.move-uploaded-file]: failed to open stream: Permission denied in 
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\Windows\Temp\php42A1.tmp' to 'upload/logo.jpeg' in 

Δημοσ.

Κατ αρχήν πρέπει στη φόρμα σου να έχεις ορίσει enctype="multipart/form-data".

Έστω η φόρμα form1 και το πεδίο για το attachment:

 

>
<form action="sendmail.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
...
<input name="attachment" type="file" id="attachment" />
...
</form>

 

Όταν κάνεις submit, η σελίδα sendmail.php που έχεις ορίσει στο action της φόρμας πρέπει να κάνει τα εξής:

 

>
$random_hash = md5(date('r', time())); 

$to = "[email protected]";
$subject = addslashes($_POST['subject']);
$headers = "From: " .addslashes($_POST['email'])."\r\n";
$headers .= 'Content-Type: multipart/mixed;\r\n'; 

//Gather file data and other things
$tmp = $_FILES['attachment']['tmp_name'];
$sep = md5(time()); //create a boundary string for sending a mime type email. It must be unique so we use the MD5 algorithm to generate a random hash 
$filename = $_FILES['attachment']['name'];

$filedata = file_get_contents($tmp); //Get file contents
$fdata = chunk_split(base64_encode($filedata)); //Encode data into text form

//Determine mime type
$pos = strrpos($_FILES['attachment']['name'], ".");
$ext = substr($_FILES['attachment']['name'], $pos+1, (strlen($_FILES['attachment']['name'])-$pos+1));

if($ext == "zip") { // Ορίζουμε τα accepted file types (zip, pdf, doc κλπ...)
   $mime_type = "application/zip";
}
elseif($ext == "pdf") { // Entaxei, auto mporei na ginei kai me switch alla you get the point...
   $mime_type = "application/pdf";
}
elseif($ext == "doc" || $ext == "docx") {
   $mime_type = "application/msword";
}
elseif($ext == "JPG" || $ext == "jpg" || $ext == "JPEG" || $ext == "jpeg") {
   $mime_type = "image/jpeg";
}
elseif($ext == "gif" || $ext == "GIF") {
   $mime_type = "image/gif";
}
else {
   exit("Error: Wrong file type!");
}

//Begin the message.  Be sure to change this how you want it.

//Begin the headers
$headers .= "MIME-Version: 1.0
Content-Type: Multipart/Mixed;  boundary=\"$sep\" charset=\"utf-8\"
Content-Transfer-Encoding: 8bit

--$sep
Content-Type: $mime_type; name=\"$filename\"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=\"$filename\"

$fdata
--$sep";

$body= "...."; // To ftiaxneis opws theleis

mail($to, $subject, $body, $headers);

Κάνε 1-2 δοκιμές, θα σου δουλέψει.

Δημοσ.

>
//Determine mime type
$pos = strrpos($_FILES['attachment']['name'], ".");
$ext = substr($_FILES['attachment']['name'], $pos+1, (strlen($_FILES['attachment']['name'])-$pos+1));

if($ext == "zip") { // Ορίζουμε τα accepted file types (zip, pdf, doc κλπ...)
   $mime_type = "application/zip";
}
elseif($ext == "pdf") { // Entaxei, auto mporei na ginei kai me switch alla you get the point...
   $mime_type = "application/pdf";
}
elseif($ext == "doc" || $ext == "docx") {
   $mime_type = "application/msword";
}
elseif($ext == "JPG" || $ext == "jpg" || $ext == "JPEG" || $ext == "jpeg") {
   $mime_type = "image/jpeg";
}
elseif($ext == "gif" || $ext == "GIF") {
   $mime_type = "image/gif";
}
else {
   exit("Error: Wrong file type!");
}

Αυτο δεν χρειάζεται λογικά. Το $_FILES["file"]["type"] περιέχει από μόνο του το mime type.

 

Από το http://www.php.net/manual/en/features.file-upload.post-method.php

$_FILES['userfile']['type']

 

The mime type of the file, if the browser provided this information. An example would be "image/gif".

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...