2010-08-02 8 views
2

PHP envoyer des pièces jointes de courrier

j'ai trouvé le post sur l'ajout de pièces jointes au courrier. La question est de savoir comment connecter le fichier téléchargé avec cette fonction? Qu'est-ce que je dois passer?


UPD:

echo '<pre>'; 
print_r($_FILES); 
echo '</pre>'; 

$uploads_dir = '/uploads'; // It has need rights 

$tmp_name = $_FILES["vac_file"]["tmp_name"]; 
$res = is_uploaded_file($tmp_name); // This is true 
$name = $_FILES["vac_file"]["name"]; 

move_uploaded_file($tmp_name, "$uploads_dir/$name"); 
echo '$tmp_name: '. $tmp_name . '; $name: ' . $name; 

Array 
(
    [vac_file] => Array 
     (
      [name] => LFS.desktop 
      [type] => application/octet-stream 
      [tmp_name] => /tmp/phpV417nF 
      [error] => 0 
      [size] => 226 
     ) 

) 

yeah! 
Warning: move_uploaded_file(/uploads/LFS.desktop): failed to open stream: No such file or directory in /srv/http/vacancies_attachment.php on line 47 Warning: move_uploaded_file(): Unable to move '/tmp/phpV417nF' to '/uploads/LFS.desktop' in /srv/http/vacancies_attachment.php on line 47 $tmp_name: /tmp/phpV417nF; $name: LFS.desktop 

Répondre

3

Utilisez move_uploaded_file() pour déplacer le fichier vers un emplacement temporaire; attachez-le au mail à partir de là et supprimez-le après (ou gardez-le, quoi que vous vouliez faire). Voir le PHP manual on file uploads pour un exemple détaillé.

+0

J'ai essayé de le faire et eu l'erreur. Pourriez-vous regarder la publication mise à jour? – Ockonal

+0

@Ockonal êtes-vous sûr que '/ uploads' existe? Dans le répertoire racine? –

+0

oh, j'ai oublié le point dans le chemin. './uploads' fonctionne très bien. Merci pour le conseil. – Ockonal

3

Votre solution complète devrait ressembler à ceci:

1) html

<form method="post" action="myupload.php"> 
<input type="file" name="uploaded_file" /> 
<input type="submit" /> 
</form> 

2) myupload.php

<?php 
$uploads_dir = '/uploads'; 
foreach ($_FILES["uploaded_file"]["error"] as $key => $error) { 
    if ($error == UPLOAD_ERR_OK) { 
     $tmp_name = $_FILES["uploaded_file"]["tmp_name"][$key]; 
     $name = $_FILES["uploaded_file"]["name"][$key]; 
     move_uploaded_file($tmp_name, "$uploads_dir/$name"); 
    } 
} 
?> 

Extrait de http://php.net/manual/en/function.move-uploaded-file.php

+0

Le code est pour multiplier les fichiers. Je l'ai réécrit pour mes besoins. Pourriez-vous regarder l'article mis à jour? – Ockonal