Ik heb een HTML-formulier met de optie om een bestand te uploaden.
Ik wil dat bestand dan samen met de rest van de formuliergegevens als bijlage naar het e-mailadres sturen.
Ik gebruik PHP Mailer en ik krijg de formuliergegevens om te verzenden: zoals naam, telefoonnummer, enz.
Ik krijg de afbeelding niet meegestuurd. Ik heb de code gegeven die ik tot nu toe heb
<!DOCTYPE html>
<html>
<head>
<title>Form</title>
</head>
<body>
<form id='contactus' action='contact.php' enctype="multipart/form-data" method='post'>
<fieldset >
<legend>Contact us</legend>
<div class='container'>
<label for='email' >Name*:</label><br/>
<input type="text" id="name" name="name" required /><br>
<label for='email' >Phone*:</label><br/>
<input type="text" id="phone" name="phone" required /><br>
<label for='email' >Email*:</label><br/>
<input type='text' name='email' id='email' required/><br/>
<label for='message' >Message:</label><br/>
<textarea rows="10" cols="50" name='message' id='message'></textarea>
<br>
<!-- Name of input element determines name in $_FILES array -->
Send this file: <input id="file" name="image" type="file" />
<input type='submit' name='Submit' value='Submit' />
</div>
</fieldset>
</form>
</body>
</html>
Antwoord 1, autoriteit 100%
Als je belt
move_uploaded_file($file_tmp,"uploads/".$file_name);
Dit maakt een bestand in de uploads/
Gids met de naam van het bestand zoals het op de computer van de uploader is genoemd.
Dan gebruikte u voorbeeldcode om de bijlage aan Phpmailer toe te voegen, zodat u in feite niet-bestaande bestanden probeert bij te voegen.
Deze twee regels:
$mail->addAttachment('uploads/file.tar.gz'); // I took this from the phpmailer example on github but I'm not sure if I have it right.
$mail->addAttachment('uploads/image.jpg', 'new.jpg');
moet worden gewijzigd in:
$mail->addAttachment("uploads/".$file_name);
Noteer ook, het is niet nodig om te bellen met move_uploaded_file
Als u de bijlage na het geüpload en gemaild niet wilt opslaan. Als dat het geval is, bel dan gewoon AddAttachment
met $_FILES['image']['tmp_name']
als het bestandsargument.
Ook, in uw HTML-formulier, hebt u
<input id="file" name="file" type="file" />
, maar raadpleeg de invoer als image
in de code. U moet de naam van die ingang van file
naar image
.
Om de afbeelding alleen bij te voegen en niet op te slaan, laat het de move_uploaded_file
code uit en toevoegen:
$file_tmp = $_FILES['image']['tmp_name'];
$file_name = $_FILES['image']['name'];
//...
$mail->AddAttachment($file_tmp, $file_name);
Antwoord 2
$mail->addAttachment("uploads/".$file_name);
Gebruik gewoon bovenstaande code voor de php-mailer verzendfunctie