Avatar billede michael_kjellerup Nybegynder
06. november 2006 - 13:31 Der er 13 kommentarer og
1 løsning

upload af filer til specifik adresse

Jeg har lavet en formular, der har en action som du kan se i et foregående ? som jeg har oprettet:

(http://www.eksperten.dk/spm/739196)

I denne formular vil jeg gerne oprette et filupload, men kan det lade sig gøre, og hvordan vedhæfter jeg det til én af de specifikke mail-adresser som henninghabor hjalp mig til at få sat ind...??

På forhånd tak

Mick
Avatar billede coderdk Praktikant
06. november 2006 - 16:36 #1
I din <form> tilføj attributten: enctype="multipart/form-data"
Tilføj felter:

Upload fil: <input type="file" name="userfile">

Inde i if(isset($_POST[send])){ tilføj:

if ( !empty( $_FILES['userfile'] ) && is_uploaded_file( $_FILES['userfile']['tmp_name'] ) )
{
  $origname = basename( $_FILES['userfile']['name'] );
  $name = tempnam( "uploads", "upload_" );
  move_uploaded_file( $_FILES['userfile']['tmp_name'], "uploads/" . $name );
  // BEMÆRK AT "uploads" skal være en folder i niveau med scriptet, og at webserveren
  // skal kunne skrive til den! I FTP-programmet CHMOD folderen til 777
}

Dernæst udskifter du dine mail()-kald med phpmailer: http://phpmailer.sf.net/ Kig i eksemplerne for hvordan den virker. Det er nemt at tilføje filer til den, så nemt som:

$mail->AddAttachment("upload/" . $name, $origname );
Avatar billede michael_kjellerup Nybegynder
06. november 2006 - 21:22 #2
- hej coderdk

For mig, og jeg antager her, at det ikke overrasker dig, forekommer det avanceret.

Noget andet er, at jeg bruger formen til at generere et svar, der er sat op på en ganske bestemt måde, i et ganske bestemt layout.

Uploadet behøver ikke at aflevere filen i en mappe, den må gerne bare vedhæftes lige præcist den ene mail.
Jeg er ikke sikker på at jeg er vild med at ændre det hele, så phpmailer 'overtager', men løsningen er måske brugbar, medmindre jeg eller andre finder en 'lettere' alternativ løsning.

Ikke destomindre vil jeg da prøve den af, førstkommende weekend, jeg har desværre ikke tid før...

Tak for svar

Mvh - Mick
Avatar billede coderdk Praktikant
06. november 2006 - 21:42 #3
I mange opsætninger er det nødvendigt at flytte filen over i en anden mappe, før man overhovedet kan læse den. Derfor har jeg lavet det sådan at den uploades til en mappe. Men du kan kalde unlink( "uploads/$name" ); efter mailen er sendt, så slettes den.
phpmailer er den letteste måde at vedhæfte en fil til en mail, da du ellers selv skal komponere en multipart MIME mail vha headere. phpmailer er KLART lettest.

Du får lige et svar, så kan du acceptere eller afslå når du har testet :)
Avatar billede michael_kjellerup Nybegynder
06. november 2006 - 22:08 #4
Hej igen

Det kunne såmænd godt være aktuelt at flytte filen til en mappe - også derfor ved jeg ikke rigtigt om det er dét - sagen er jo at jeg skulle kunne finde ud af det - det der kan forekomme dig let, kan sagtens forekomme mig svært.

Jeg prøver, og kan jeg 'klare skærene' er du helt klart manden til de 100 point, kunne jeg give mere, gjorde jeg såmænd også gerne det, det er vitterligt noget jeg skal bruge.

På forhånd tak

Mick
Avatar billede coderdk Praktikant
06. november 2006 - 23:12 #5
Det burde være så simpelt som:

<?

require_once( "phpmailer.class.php" );
if( isset( $_POST['send'] ) )
{
    $name = "";
    $origname = "";
    $mail = new PHPMailer();
    $mail->IsMail();
    $mail->AddAddress('mick@kjellerup.biz', 'Mick');
    $mail->Subject = 'Mail fra hjemmeside';
    $mail->Body = "\n\n".$_POST['besked']."\n\n".$_POST['mere_besked']."\n\n".$_POST['endnu_mere_besked'];
    $mail->From = 'mick@kjellerup.biz';
    $mail->FromName = $_POST['navn'];
    $mail->AddReplyTo( $_POST['email'], $_POST['navn'] );
    $file = false;
    if ( !empty( $_FILES['userfile'] ) && is_uploaded_file( $_FILES['userfile']['tmp_name'] ) )
    {
      $file = true;
      $origname = basename( $_FILES['userfile']['name'] );
      $name = tempnam( "uploads", "upload_" );
      move_uploaded_file( $_FILES['userfile']['tmp_name'], "uploads/" . $name );
      // BEMÆRK AT "uploads" skal være en folder i niveau med scriptet, og at webserveren
      // skal kunne skrive til den! I FTP-programmet CHMOD folderen til 777
      $mail->AddAttachment( "upload/" . $name, $origname );
    }
    if ( !$mail->Send() )
    {
        echo "Mail failed to send...";
    }
    if ( $file )
    {
        // SLETTER FILEN EFTER AFSENDELSE!
        unlink("upload/$name");
    }
}

$headers = $_POST[navn];
$email = $_POST[email];
$tlf = $_POST[tlf];

echo "<b><font style='color: #cc0000'>Hej $headers.</font></b>";
echo "<br><br>";
echo "Tak for din mail.";
echo "<br><br>";
echo "Jeg vil bestræbe mig på at svare dig i dag.";
echo "<br><br>";
echo "Jeg vil i den anledning gøre brug af mailadressen: <b><font style='color: #cc0000'>$email</font></b>.";
echo "<br><br>";
echo "Alternativt vil jeg benytte tlf.nr.: <b><font style='color: #cc0000'>$tlf</font></b> for at ringe til dig.";

?>
Avatar billede michael_kjellerup Nybegynder
07. november 2006 - 21:23 #6
Hej igen coder

Points er dine, helt klart.
Jeg har endnu ikke gjort noget ved det, men har lagt koden ind, og vil kigge på det så hurtigt som muligt.
PHPmaileren har jeg heller ikke fået nærlæst, når du includer den, er det så fordi det er en fil man lægger i roden af biblioteket hvor man skriver sine php-dokumenter, er det noget der skal installeres ??

Tak i øvrigt, sådan generelt, for 'jobbet'

Mick
Avatar billede michael_kjellerup Nybegynder
07. november 2006 - 21:25 #7
hmmmm, nu har jeg klikket accepter TO gange, har du fået dine points ?
Avatar billede coderdk Praktikant
07. november 2006 - 21:28 #8
Hmm nope :)
Avatar billede michael_kjellerup Nybegynder
07. november 2006 - 21:33 #9
- nu forsvandt accept-knappen, så må du have fået dem, ja ?
Avatar billede coderdk Praktikant
07. november 2006 - 21:38 #10
Sådan! :) Tak :)
Avatar billede michael_kjellerup Nybegynder
08. november 2006 - 08:40 #11
- du coderdk - de to spgsml jeg har til phpmaileren: er det en fil man lægger i roden af det bibliotek hvor de to dokumenter til afsendelse af mail også ligger, og: er det noget der skal installeres ??

Mvh - Mick

Selvtak, i øvrigt
Avatar billede coderdk Praktikant
08. november 2006 - 13:37 #12
Der står i README:

nstallation:

Copy class.phpmailer.php into your php.ini include_path. If you are
using the SMTP mailer then place class.smtp.php in your path as well.
In the language directory you will find several files like
phpmailer.lang-en.php.  If you look right before the .php extension
that there are two letters.  These represent the language type of the
translation file.  For instance "en" is the English file and "br" is
the Portuguese file.  Chose the file that best fits with your language
and place it in the PHP include path.  If your language is English
then you have nothing more to do.  If it is a different language then
you must point PHPMailer to the correct translation.  To do this, call
the PHPMailer SetLanguage method like so:


Så ja, du kan bare smide class.phpmailer.php hvor du vil :) Jeg så lige at i min kode har jeg skrevet phpmailer.class.php i stedet for class.phpmailer.php ;)
Avatar billede michael_kjellerup Nybegynder
10. november 2006 - 08:22 #13
Hej coderdk

Jeg har såmænd læst readme-filen, men som tidligere nævnt, så er jeg ikke haj til det her - jeg forstår godt den del med sprog, m.m. - MEN, den med at kopiere class til ini.include path, den kan jeg slet ikke greje....

Jeg har smidt det hele i en mappe, men der sker ligesom ikke noget...

Jeg prøver, sideløbende med denne kommentar, at læse på phpmailerens hjemmeside.

Mvh - Mick
Avatar billede coderdk Praktikant
10. november 2006 - 08:46 #14
Ok :) Hvis dit mail-script ligger i:

http://example.dk/mail/

Og du har smidt class.phpmailer.php i

http://example.dk/includes/

Så skal mail-scriptets require se sådan ud:

require_once( "../includes/class.phpmailer.php" );
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester