Meerdere bijlagen contactformulier

Pagina: 1
Acties:

  • Storm90
  • Registratie: September 2008
  • Laatst online: 09-09 15:23
Hallo allemaal,

Ik ben bezig met een soort van contactformulier voor één van mijn websites. Met dit contactformulier moet men meerdere bijlagen mee kunnen sturen, maar ik heb geen idee hoe ik dat aan kan pakken. Ik heb geprobeerd om Uploadify (http://www.uploadify.com/demos/) te combineren met PHPmailer, maar zonder succes. Heeft iemand al eens eerder een contactformulier met bijlagen gemaakt of een idee hoe ik dit zou kunnen maken?

Het liefst zou ik zoiets dynamisch willen gebruiken als Uploadify, dat is lekker gebruiksvriendelijk. Men kan namelijk na het toevoegen van meerder bijlagen, nog het een en ander verwijderen, voordat ze het formulier willen verzenden. Toch zitten er nogal wat bugs in Uploadify, dus als er een goed alternatief is zou dat fijn zijn.

Alvast bedankt voor de moeite en alvast een gelukkig nieuwjaar toegewenst!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Wat is er mis met een normale file input control? En wat lukt je nou precies niet?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Nu jij nog. ;) Wat heb je geprobeerd, en wat lukte daar niet aan?

Op het moment dat de bestanden op jouw server staan kun je ze toch gewoon toevoegen aan een e-mail?

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Verwijderd

Om meerdere bijlagen toe te voegen moet je inderdaad gewoon meerdere file inputs onder elkaar zetten. Dat is de meest gemakkelijke route. Als het gaat om een input box waarin je meerdere files kunt selecteren, raad ik je SWFUpload aan:

http://www.swfupload.org/

Heb het zelf ook gebruikt en het is vrij gemakkelijk te installeren. Enig nadeel is dat het Flash is, dus dat moet je wel willen.

[ Voor 8% gewijzigd door Verwijderd op 30-12-2010 13:42 ]


  • Room42
  • Registratie: September 2001
  • Niet online
Kijk eens bij http://www.uploadify.com/documentation/. Daar staat onder andere ook http://www.uploadify.com/documentation/options/multi/.
NMe schreef op donderdag 30 december 2010 @ 13:34:
Wat is er mis met een normale file input control? En wat lukt je nou precies niet?
Het voordeel van zoiets als uploadify is dat het een iets betere user-experience geeft. Je kunt makkelijk meerdere bestanden selecteren en de progressie van de upload zien (in plaats van moeten wachten tot er iets gebeurd). :)

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Room42 schreef op donderdag 30 december 2010 @ 13:51:
[...]

Het voordeel van zoiets als uploadify is dat het een iets betere user-experience geeft. Je kunt makkelijk meerdere bestanden selecteren en de progressie van de upload zien (in plaats van moeten wachten tot er iets gebeurd). :)
Dat snap ik ook, maar daar ligt hier de essentie van het probleem niet. Echter ga ik op die essentie ook niet in voordat de topicstarter vertelt waar hij vastzit en wat daar precies niet lukt. We zijn hier geen quickfix. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Storm90
  • Registratie: September 2008
  • Laatst online: 09-09 15:23
Nu jij nog. ;) Wat heb je geprobeerd, en wat lukte daar niet aan?

Op het moment dat de bestanden op jouw server staan kun je ze toch gewoon toevoegen aan een e-mail?
Het probleem is dat de uploader in flash is gemaakt icm jquery. En nadat de bestanden zijn geüpload weet ik niet meer welke bestanden ik moet mee sturen. Ik kan mbv jquery de bestandsnaam weergeven maar niet in een php variable stoppen. Ik heb via google gezocht naar een oplossing en de enige oplossing die ik kon vinden was de bestandsnaam in een $_GET stoppen, maar daar was een page refresh voor nodig en dat heb ik dus liever niet.

Nu heb ik zelf een oplossing gevonden door de bestandsnamen in de value van een hidden input te stoppen en deze te scheiden door een ; teken. Dit werkte op zich erg goed. Alleen wanneer men op het kruisje drukt van een bestand na het uploaden, kan ik de waarde van dat bestand ook niet verwijderen uit de hidden input. Daarnaast bevat uploadify nog meer kleine bugs in verschillende browsers die ik niet allemaal zelf ga oplossen, simpelweg de tijd niet voor.

Dat is dus eigenlijk de reden waarom ik dit bericht hier post, omdat ik zelf geen alternatief weet. Ik hoopte dat één of meerdere van jullie ooit hetzelfde hebben geprobeerd en een goed alternatief wisten, aangezien ze het op andere fora (als tbforum) het ook niet wisten.

Weten jullie anders een goede oplossing om een waarde in javascript, in een php variable te stoppen? Zonder gebruik te maken van sessions of cookies en zonder de pagina te moeten verversen.

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Dan schrijf je die bestandsnamen toch na het uploaden in een array die je middels een AJAX-call in een sessievariabele stopt?

Oh, zonder sessies. Dat wordt lastig.

[ Voor 14% gewijzigd door CodeCaster op 30-12-2010 14:04 ]

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


  • kluyze
  • Registratie: Augustus 2004
  • Niet online
Storm90 schreef op donderdag 30 december 2010 @ 13:58:
[...]

Het probleem is dat de uploader in flash is gemaakt icm jquery. En nadat de bestanden zijn geüpload weet ik niet meer welke bestanden ik moet mee sturen. Ik kan mbv jquery de bestandsnaam weergeven maar niet in een php variable stoppen. Ik heb via google gezocht naar een oplossing en de enige oplossing die ik kon vinden was de bestandsnaam in een $_GET stoppen, maar daar was een page refresh voor nodig en dat heb ik dus liever niet.
Niet getest maar volgens de documentatie is het volgende nodig:
The fileDataName option sets the name of the file input that the flash file uses when uploading the files. This value is used for referencing the files that have been uploaded in your back-end script. For example, if you set the value of fileDataName to 'uploadify', you would reference the uploaded files as $_FILES['uploadify'] in your PHP script.
http://www.uploadify.com/documentation/options/filedataname/

  • Storm90
  • Registratie: September 2008
  • Laatst online: 09-09 15:23
CodeCaster schreef op donderdag 30 december 2010 @ 14:02:
Dan schrijf je die bestandsnamen toch na het uploaden in een array die je middels een AJAX-call in een sessievariabele stopt?

Oh, zonder sessies. Dat wordt lastig.
Nouja zonder sessies... Dat hangt ervan af. Ik ben zelf geen programmeur dus erg veel verstand ervan heb ik niet. Indien sessies altijd en in elke browser werkt, maakt het voor mij niet uit. Ik weet dat cookies uitgeschakeld kunnen zijn (ook al komt dat maar zelden voor) maar als dat met sessies niet het geval is, wil ik het wel gebruiken.

Dat vind ik dan ook jammer van uploadify, dat het gebruik maakt van flash. Maar ik hoop dat daar weinig mensen last van zullen hebben, die gok moet ik dan maar nemen denk ik ;)

[ Voor 12% gewijzigd door Storm90 op 30-12-2010 14:08 ]


  • Sypher
  • Registratie: Oktober 2002
  • Laatst online: 28-11 13:45
Een sessie werkt alleen als je een cookie zet met het sessie ID, of je moet deze meegeven in de URL wat niet aan te raden is. :)

  • Storm90
  • Registratie: September 2008
  • Laatst online: 09-09 15:23
kluyze schreef op donderdag 30 december 2010 @ 14:06:
[...]
Niet getest maar volgens de documentatie is het volgende nodig:


[...]


http://www.uploadify.com/documentation/options/filedataname/
Dan heb ik toch niet zo goed gezocht, ik ga het direct proberen.

  • Storm90
  • Registratie: September 2008
  • Laatst online: 09-09 15:23
Het wil nog steeds niet lukken. Dit is mijn code

header
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script type="text/javascript">
                jQuery(document).ready(function() {
                    jQuery('#file_upload').uploadify({
                        'uploader'          : '/wp-content/themes/voordeel/uploadify/uploadify.swf',
                        'script'            : '/wp-content/themes/voordeel/uploadify/uploadify.php',
                        'cancelImg'         : '/wp-content/themes/voordeel/uploadify/cancel.png',
                        'folder'            : '/wp-content/themes/voordeel/uploads',
                        'buttonText'        : 'Bladeren...',
                        'multi'             : true,
                        'removeCompleted'   : false,
                        'auto'              : true,
                        'fileDataName'      : 'Filedata'
                    });
                });
                </script>


form
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
if(isset($_POST['filenames'])){
if (!empty($_FILES)) {

    echo "x ";
    echo $_FILES['Filedata']['name'];
}
}
?>
<div class="content">
    <form action="/offerte-aanvragen/" class="offerte" method="post" enctype="multipart/form-data">
        <table>
            <tr>
                <td>Naam:</td>
                <td><input type="text" name="offerte_name" class="name" <?php if(isset($_POST['contact_name'])){ echo 'value="'.$_POST['contact_name'].'"'; } ?> /></td>
            </tr>
            <tr>
                <td>E-mail:</td>
                <td><input type="text" name="contact_email" class="email" <?php if(isset($_POST['contact_email'])){ echo 'value="'.$_POST['contact_email'].'"'; } ?> /></td>
            </tr>
            <tr>
                <td>Bijlagen:</td>
                <td><input id="file_upload" name="Filedata" type="file" /></td>
            </tr>
            <tr>
                <td>Opmerkingen:</td>
                <td><textarea name="contact_message" class="message"><?php if(isset($_POST['contact_message'])){ echo $_POST['contact_message']; } ?></textarea></td>
            </tr>
            <tr>
                <td><input type="hidden" name="filenames" /></td>
                <td><input type="submit" /></td>
            </tr>
        </table>
    </form>
</div>


De 'x' wordt weergegeven, maar ik zie de naam van het bestand niet verschijnen. Ik heb al op verschillende websites gezocht en eigenlijk zou dit moeten werken (althans, volgens die websites). Weten jullie wat het probleem is?

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Waarom ga je alleen de bestandsnaam van één specifiek bestand printen? Doe gewoon var_dump($_FILES) om te zien of je überhaupt wat binnen krijgt en zo ja wat. :)

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


  • kluyze
  • Registratie: Augustus 2004
  • Niet online
Doe eens een var_dump van de global $_FILES

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-11 09:49

Bosmonster

*zucht*

Storm90 schreef op donderdag 30 december 2010 @ 14:06:
[...]

Dat vind ik dan ook jammer van uploadify, dat het gebruik maakt van flash. Maar ik hoop dat daar weinig mensen last van zullen hebben, die gok moet ik dan maar nemen denk ik ;)
Uploadify heeft een normale file-input als fallback. Zorg dus ook dat het met die fallback werkt.

  • Storm90
  • Registratie: September 2008
  • Laatst online: 09-09 15:23
kluyze schreef op donderdag 30 december 2010 @ 15:12:
Doe eens een var_dump van de global $_FILES
Bij een var_dump($_FILES) krijg ik het volgende:
code:
1
array(1) { ["Filedata"]=> array(5) { ["name"]=> string(0) "" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(4) ["size"]=> int(0) } }


Klopt niet helemaal volgens mij?

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

[google=php $_FILES error 4], Error Messages Explained:
UPLOAD_ERR_NO_FILE

Value: 4; No file was uploaded.
;)

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


  • Storm90
  • Registratie: September 2008
  • Laatst online: 09-09 15:23
erg vreemd, want het bestand is gewoon succesvol geüpload naar de server. Ik heb het bestand nog eens verwijderd van de server en opnieuw geprobeerd. En opnieuw komt het bestand gewoon op de server te staan, maar geeft PHP dezelfde error.

  • kluyze
  • Registratie: Augustus 2004
  • Niet online
Storm90 schreef op donderdag 30 december 2010 @ 15:09:
JavaScript:
1
2
3
4
5
6
7
8
9
<script type="text/javascript">
   jQuery(document).ready(function() {
      jQuery('#file_upload').uploadify({
         ...
         'folder': '/wp-content/themes/voordeel/uploads',
         ...
      });
   });
</script>
Die folder moet volgens de documentatie bestaan. Maar ik weet niet wat die van root neemt. Gebruik je een windows server of een linux server? Zet daar eens een absoluut path.

http://www.uploadify.com/documentation/options/folder/

[ Voor 9% gewijzigd door kluyze op 30-12-2010 16:06 ]


  • Raynman
  • Registratie: Augustus 2004
  • Laatst online: 22:02
Uploadify ziet eruit als een AJAX-dingetje, waarbij uploaden van de bestanden niet tegelijk gaat met het versturen van het formulier. Uploadify komt met een voorbeeldscript (dat je lijkt te gebruiken) om de uploads af te handelen (daarom wordt het bestand dus wel geüpload). Zou goed kunnen dat daarin een sessie aangemaakt wordt. Als het formulier dan verzonden wordt, is de $_FILES array leeg (tenzij iemand zonder js/flash het op de traditionele manier gebruikt), want het uploaden is al klaar, maar $_SESSION kan dus info over die bestanden bevatten.

  • Storm90
  • Registratie: September 2008
  • Laatst online: 09-09 15:23
kluyze schreef op donderdag 30 december 2010 @ 16:03:
[...]
Die folder moet volgens de documentatie bestaan. Maar ik weet niet wat die van root neemt. Gebruik je een windows server of een linux server? Zet daar eens een absoluut path.

http://www.uploadify.com/documentation/options/folder/
Ik weet niet wat voor soort server er wordt gebruikt, de site staat online bij hosting2go. En met een absoluut pad upload hij het bestand niet meer en krijg ik dezelfde foutmelding.

  • kluyze
  • Registratie: Augustus 2004
  • Niet online
En als je de optie weg laat?

  • Storm90
  • Registratie: September 2008
  • Laatst online: 09-09 15:23
Dat is niet gelukt. Ik heb een erg goed alternatief gevonden, namelijk jQuery Multiple File Upload plugin. Om dat werken te krijgen, moet ik alleen nog deze array in een foreach zien te krijgen om deze toe te voegen als bijlage in het contact formulier:

code:
1
Array ( [name] => Array ( [0] => slideshow_top.png [1] => ) [type] => Array ( [0] => image/png [1] => ) [tmp_name] => Array ( [0] => /tmp/php2itmBt [1] => ) [error] => Array ( [0] => 0 [1] => 4 ) [size] => Array ( [0] => 383 [1] => 0 ) )


Ik ben nog aan het proberen, ik weet niet of iemand de oplossing al weet?

Ik ben geen programmeur dus ik heb eigenlijk geen idee. Het volgende wil in ieder geval al niet werken:
code:
1
2
3
4
$attachments = $_FILES["FileData"];
            foreach($attachments as $key => $value) {  //loop the Attachments to be added ...
                $mail->AddAttachment($value['tmp_name'].'/'.$value['name']);
            }

Verwijderd

Die array foreach'en heeft geen zin, omdat het slechts 1 element betreft. Heb even gespeurd op de site van de plugin die jij gebruikt, maar er staat duidelijk een notice:


NOTICE TO PHP USERS: The plugin's default behaviour generates an array of elements (sharing the same name). In order for this array to be properly identified and handled in PHP, you have add "[]" to name of your element.

<input type="file" name="MyStuff[]"...

http://www.fyneworks.com/...ile-upload/#tab-Uploading

Als je dan meerdere files upload, krijg je waarschijnlijk een array met:
code:
1
2
3
4
5
6
array(
  0 => array (file1shit),
  1 => array (file2shit), 
  ....
  x => array (filexshit)
);


Die kan makkelijk met een foreach uitgelezen worden. Hopelijk weet je hoe dat moet, want ik vind het niet erg om je te helpen, maar om echt alles voor te moeten doen gaat me wat te ver.

[ Voor 3% gewijzigd door Verwijderd op 30-12-2010 21:28 ]


  • Storm90
  • Registratie: September 2008
  • Laatst online: 09-09 15:23
Haa Luwe,
bedankt voor de tip. Ik heb nu de hele avond rond gezocht op internet en van alles geprobeerd en ben nu dicht bij de oplossing. Ik kan nu de bijlagen verzenden, maar niet zonder foutmeldingen.

Bij het uploaden van 1 bestand maakt de array alsnog 2 keys aan, één met waarde en één zonder. De met waarde wordt succesvol verzonden dus dat is geen probleem. Maar omdat er één zonder waarde is, krijg ik wel na verzenden steeds de melding "Could not access file". Misschien dat jullie een andere oplossing hebben dan een for loop om dat op te lossen?

Als men het maximaal aantal bijlagen toevoegt (= 3), worden er trouwens gewoon 3 keys aangemaakt, dus dan heb ik het probleem niet.

Ik heb het niet met een foreach loop op kunnen lossen, omdat ik elke keer een waarde uit twee arrays moet halen (één uit de array tmp_name en één uit de array name). Het lukte mij maar niet om hier een foreach loop van te maken.

Mijn code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
$name = $_FILES["FileData"]['tmp_name'];
for ($i=0; $i < count($name); $i++){
                //Get the uploaded file information
                $name_of_uploaded_file =
                    basename($_FILES['FileData']['name'][$i]);

                //get the file extension of the file
                $type_of_uploaded_file =
                    substr($name_of_uploaded_file,
                    strrpos($name_of_uploaded_file, '.') + 1);


                //copy the temp. uploaded file to uploads folder
                $path_of_uploaded_file = $upload_folder . $name_of_uploaded_file;
                $tmp_path = $_FILES["FileData"]["tmp_name"][$i];

                if(is_uploaded_file($tmp_path))
                {
                  if(!copy($tmp_path,$path_of_uploaded_file))
                  {
                    $errors .= '\n error while copying the uploaded file';
                  }
                }

                $mail->AddAttachment($path_of_uploaded_file);
            };

Verwijderd

Hmm, mijn instinct zegt mij dat deze lijnen:

$_FILES['FileData']['name'][$i]

Als volgt geschreven moeten worden:

$_FILES['FileData'][$i]['name']

In een foreach zou dat worden:

PHP:
1
2
3
4
5
6
foreach($_FILES['FileData'] as $value)
{ 
  // Effectief betekent $value nu $_FILES['FileData'][key]
  $name = $value['name'];
   .. etc ..
}


Maar dat weet ik dus niet zeker als ik niet weet hoe de array is opgebouwd. Kun je eens opnieuw een var_dump plaatsen van je FILES array?

[ Voor 6% gewijzigd door Verwijderd op 30-12-2010 22:27 ]


  • Storm90
  • Registratie: September 2008
  • Laatst online: 09-09 15:23
Verwijderd schreef op donderdag 30 december 2010 @ 22:26:
Hmm, mijn instinct zegt mij dat deze lijnen:

$_FILES['FileData']['name'][$i]

Als volgt geschreven moeten worden:

$_FILES['FileData'][$i]['name']

In een foreach zou dat worden:

PHP:
1
2
3
4
5
6
foreach($_FILES['FileData'] as $value)
{ 
  // Effectief betekent $value nu $_FILES['FileData'][key]
  $name = $value['name'];
   .. etc ..
}


Maar dat weet ik dus niet zeker als ik niet weet hoe de array is opgebouwd. Kun je eens opnieuw een var_dump plaatsen van je FILES array?
Alsjeblieft:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Array (
    [name] => Array (
        [0] => slideshow_top.png
        [1] =>
        )
    [type] => Array (
        [0] => image/png
        [1] =>
        )
    [tmp_name] => Array (
        [0] => /tmp/php2itmBt
        [1] =>
        )
    [error] => Array (
        [0] => 0
        [1] => 4
        )
    [size] => Array (
        [0] => 383
        [1] => 0
        )
    )

  • Raynman
  • Registratie: Augustus 2004
  • Laatst online: 22:02
^ Met Luwe (ik ben er vrij zeker van). Edit: oké, niet dus, zie inderdaad op php.net dat er een speciale behandeling is van FILES en (edit2) var_dump bevestigt dat.

Die lege entry is waarschijnlijk omdat er automatisch een nieuwe input klaar wordt gezet voor het volgende bestand. Als je geen bestand meer kiest, wordt er dus een leeg veld verzonden. Na het maximum komt er geen lege meer bij, dus dan heb je geen probleem. Je zult dus moeten checken of het laatste element van de array leeg is (of misschien beter gewoon met de error code of -- uit mijn hoofd -- is_uploaded_file).

Trouwens: als het bestand meteen in een mail gezet wordt en je het verder niet op de server wilt bewaren, kun je het waarschijnlijk gewoon op de tmp-locatie laten staan en dus die tmp_name aan AddAttachment voeren.

Ik krijg echter wel een beetje de indruk dat je toch ietsje meer kennis moet vergaren voordat je dit kunt oplossen (je zei al dat je geen programmeur was en zo). Dit gerommel in de hoop dat het gaat werken kost misschien uiteindelijk net zoveel tijd als een tutorial volgen en het dan (ongeveer) in één keer goed doen. (Als je verder nooit meer zoiets gaat doen, is laten doen een optie, maar voorkauwen is op GoT dan eigenlijk weer niet de bedoeling.) Edit: ik moet zeggen dat je wel goede inzet toont, maar soms lijkt het toch nog een beetje knip-en-plakwerk.

Nog een aanvulling:
[list]
• Als je toch uit tmp wilt verplaatsen, kun je move_uploaded_file in plaats van copy gebruiken.
• Ik denk dat basename weinig toevoegt (anders is dit ook een leuke manier om gegevens over directorystructuren van bezoekers te vergaren).
• I.p.v. de for kun je wel foreach($_FILES['FileData']['name'] AS $key => $name) doen; dan heb je de name en de rest kun je via $_FILES['FileData']['x'][$key] benaderen.

[ Voor 46% gewijzigd door Raynman op 30-12-2010 23:03 . Reden: foute aanname gecorrigeerd e.d. (sorry TS) ]


Verwijderd

Lees hier de eerste reactie eens: http://uk3.php.net/manual....file-upload.multiple.php

Op die manier kun je wel de files array uitlezen op de manier zoals ik met de foreach bedoelde. Uiteindelijk moet het ook met de code die jij gebruikt hebt lukken though.

Over de 'Could not access' fout: staan de chmod rechten dusdanig ingesteld dat je de geuploade file ook daadwerkelijk verder kunt gebruiken? Ik denk namelijk dat je rechten om het bestand te lezen in het email script te laag zijn.

Check: http://www.pfz.nl/wiki/chmod/

[ Voor 200% gewijzigd door Verwijderd op 30-12-2010 23:03 . Reden: Typo's & aanvullingen ]


  • Storm90
  • Registratie: September 2008
  • Laatst online: 09-09 15:23
Trouwens: als het bestand meteen in een mail gezet wordt en je het verder niet op de server wilt bewaren, kun je het waarschijnlijk gewoon op de tmp-locatie laten staan en dus die tmp_name aan AddAttachment voeren.
Bedankt voor de tip. Ik dacht dat, dat niet mogelijk was. Maar nu heb ik het dus opgelost met de volgende code:
code:
1
2
3
4
5
6
if(!empty($_FILES['FileData']['name'][$i])){
     //Get the uploaded file information
     $name_of_uploaded_file = basename($_FILES['FileData']['name'][$i]);

     $mail->AddAttachment($name_of_uploaded_file);
}

tmp_name was niet mogelijk, dan kreeg ik een bijlage die ik niet kon openen. Nu worden de bijlages direct mee verzonden. En ik heb geen last meer van die foutmelding doordat ik alles in een if statement heb gestopt.

EDIT:
Ik krijg echter wel een beetje de indruk dat je toch ietsje meer kennis moet vergaren voordat je dit kunt oplossen (je zei al dat je geen programmeur was en zo). Dit gerommel in de hoop dat het gaat werken kost misschien uiteindelijk net zoveel tijd als een tutorial volgen en het dan (ongeveer) in één keer goed doen. (Als je verder nooit meer zoiets gaat doen, is laten doen een optie, maar voorkauwen is op GoT dan eigenlijk weer niet de bedoeling.) Edit: ik moet zeggen dat je wel goede inzet toont, maar soms lijkt het toch nog een beetje knip-en-plakwerk.
Ik heb dus al gezegd dat ik geen programmeur ben, maar ik heb wel een goede basis in PHP. Ik heb de kennis om gastenboeken, contact formulieren, veilige registratie en inlog formulieren te maken en nog veel meer. Ik heb alleen nooit een opleiding in programmeren gehad en heb me nooit ver genoeg verdiept in het gebruik van arrays en foreach loops. En nu merk ik toch dat ik dat wel had moeten doen ;).

Ik heb in ieder geval erg veel geleerd vandaag en jullie hebben me erg goed verder geholpen :) Bedankt voor jullie hulp!

[ Voor 40% gewijzigd door Storm90 op 30-12-2010 23:15 ]


  • Raynman
  • Registratie: Augustus 2004
  • Laatst online: 22:02
Storm90 schreef op donderdag 30 december 2010 @ 23:07:
[...]

Bedankt voor de tip. Ik dacht dat, dat niet mogelijk was. Maar nu heb ik het dus opgelost met de volgende code:
code:
1
2
3
4
5
6
if(!empty($_FILES['FileData']['name'][$i])){
     //Get the uploaded file information
     $name_of_uploaded_file = basename($_FILES['FileData']['name'][$i]);

     $mail->AddAttachment($name_of_uploaded_file);
}

tmp_name was niet mogelijk, dan kreeg ik een bijlage die ik niet kon openen. Nu worden de bijlages direct mee verzonden. En ik heb geen last meer van die foutmelding doordat ik alles in een if statement heb gestopt.
Hmm, dat vind ik toch gek (als je geen copy/move_uploaded_file meer doet). Die 'name' is de naam van het bestand bij de client (zie ook de opmerking over basename die ik hierboven toegevoegd heb en kijk naar jouw var_dump output). Als dat met AddAttachment werkt (ik neem aan PHPMailer of vergelijkbaar) zou het naar de working directory van je script moeten zijn geüpload met diezelfde naam. Ik zou denken aan het volgende (tweede argument geeft de bijlage dan een fatsoenlijke naam, inclusief extensie, wat misschien problemen met openen voorkomt):
PHP:
1
$mail->AddAttachment($_FILES['FileData']['tmp_name'][$i], $_FILES['FileData']['name'][$i]);
EDIT:

[...]

Ik heb dus al gezegd dat ik geen programmeur ben, maar ik heb wel een goede basis in PHP. Ik heb de kennis om gastenboeken, contact formulieren, veilige registratie en inlog formulieren te maken en nog veel meer. Ik heb alleen nooit een opleiding in programmeren gehad en heb me nooit ver genoeg verdiept in het gebruik van arrays en foreach loops. En nu merk ik toch dat ik dat wel had moeten doen ;).

Ik heb in ieder geval erg veel geleerd vandaag en jullie hebben me erg goed verder geholpen :) Bedankt voor jullie hulp!
Ja, ik had die hele opmerking ook alweer bijna weggehaald. En of je nou een specifieke opleiding moet hebben om je programmeur te mogen noemen... (er was laatst hier iets over 'kwaliteit van code')
Pagina: 1