2015-03-13 8 views
5

में एकाधिक अनुलग्नक जोड़ना मैं संलग्नक में एकाधिक छवियों को संलग्न करने का प्रयास कर रहा हूं। मैंने प्रत्येक अनुलग्नक के लिए अग्रदूत का उपयोग किया है, लेकिन जब मैं foreach का उपयोग करता हूं तो इसे tempname और नाम नहीं मिल रहा है, मैं शायद कुछ गलत कर रहा हूं। नीचे दिए गए कोड और त्रुटियों है:PHPMailer

इनपुट एचटीएमएल

<input id="upload-file" class="upload-file" type="file" name="upload-file[]">

$ _FILES की var_dump [ 'अपलोड फ़ाइल']:

array(5) { ["name"]=> array(1) { [0]=> string(47) "WRANGLER_AW13_GIRLONTOP_A4_LANDSCAPE_300dpi.jpg" } ["type"]=> array(1) { [0]=> string(10) "image/jpeg" } ["tmp_name"]=> array(1) { [0]=> string(24) "C:\xampp\tmp\php41DC.tmp" } ["error"]=> array(1) { [0]=> int(0) } ["size"]=> array(1) { [0]=> int(91742) } } 

var_dump नाम और temp_name के लिए :

Notice: Undefined index: name in C:\xampp\htdocs\hmg\process-email.php on line 66 

Notice: Undefined index: tmp_name in C:\xampp\htdocs\hmg\process-email.php on line 67 

NULL 
NULL 

कोड: पीएचपी की बुराई ओर करने के लिए

foreach($_FILES['upload-file'] as $file) {   

    $name = $file['name']; 
    $path = $file['tmp_name']; 
    var_dump($name); 
    var_dump($path); 

    //And attach it using attachment method of PHPmailer. 

    $mail->addattachment($path,$name); 
} 
+0

चेतावनी दी जानकारी होनी चाहिए कि प्रस्तुत जवाब में से कोई भी अपलोड सुरक्षित रूप से संभाल, के अनुसार [पीएचपी डॉक्स] (http://php.net/manual/en/features.file-upload.php)। अपने कोड को [PHPMailer के साथ प्रदान किए गए फ़ाइल अपलोड उदाहरण] पर आधारित करें (https://github.com/PHPMailer/PHPMailer/blob/master/examples/), जो फ़ाइलों को सही तरीके से संभालता है। – Synchro

उत्तर

3

आपका स्वागत है। $_FILES वह नहीं है, जो डेवलपर अपेक्षा करेगा।

//wrong code 
$img1 = $_FILES['upload-file'][0]['tmp_name']; 
$img2 = $_FILES['upload-file'][1]['tmp_name']; 

//working code 
$img1 = $_FILES['upload-file']['tmp_name'][0]; 
$img2 = $_FILES['upload-file']['tmp_name'][1]; 

तो तुम सब जवाब के लिए की तरह

$totalFiles = count($_FILES['upload-file']['tmp_name']); 
for ($i = 0; $i < $totalFiles; $i++) { 
    $name = $_FILES['upload-file']['name'][$i]; 
    $path = $_FILES['upload-file']['tmp_name'][$i]; 
    $mail->addattachment($path,$name); 
} 
0
$i = '0'; 
foreach($_FILES['upload-file'] as $file) { 
$name = $file['name'][$i]; 
$path = $file['tmp_name'][$i]; 
var_dump($name); 
var_dump($path); 
$mail->addattachment($path,$name); 
$i++; 
} 
2

धन्यवाद कुछ की जरूरत है। मुझे यकीन है कि आपके सभी दृष्टिकोण ठीक काम करेंगे, लेकिन मैंने इसे स्वयं हल करने का फैसला किया। इस कोड को समस्या

$validAttachments = array(); 

foreach($_FILES['upload-file']['name'] as $index => $fileName) { 
    $filePath = $_FILES['upload-file']['tmp_name'][$index]; 
    $validAttachments[] = array($filePath, $fileName);    
} 

foreach($validAttachments as $attachment) { 
    $mail->AddAttachment($attachment[0], $attachment[1]); 
} 

मैं किसी को जो एक ही समस्या है यहां से कुछ मदद हो जाता है आशा है कि ...

0

समाधान यहाँ के अधिकांश रूपों पर आधारित होते हैं हल किया।

तो यदि आप किसी विशेष निर्देशिका से सभी फ़ाइलों को संलग्न करना चाहते हैं तो मैं एक साधारण समाधान के साथ आया था।

$file_to_attach_directory = 'files/'; 
if ($handle = opendir($file_to_attach_directory)) { 
    try { 
     while (false !== ($entry = readdir($handle))) { 
      $attachment_location = $file_to_attach_directory. $entry; 
      $mail->addAttachment($attachment_location); 
     } 
     closedir($handle); 
     // Send Mail 
     if (!$mail->send()) { 
     echo "Mailer Error: " . $mail->ErrorInfo; 
     } else { 
      echo "Message sent!"; 
     } 
    } catch (Exception $e) { 
     var_dump($e); 
    } 
} 
संबंधित मुद्दे