2012-08-03 22 views
6

पर सहेजने के बिना PHP में अनुलग्नक के साथ ईमेल भेजें, मैं एक साधारण फ़ॉर्म बना रहा हूं जो उपयोगकर्ता को "अपलोड" फ़ाइल और एक टिप्पणी बॉक्स दे। उपयोगकर्ता फ़ाइल (छवि या पीडीएफ हो सकता है) चुनने के बाद और सबमिट पर क्लिक करें, मैं अपने वेब सर्वर में फ़ाइल स्टोर नहीं कर रहा हूं, फ़ाइल को एक ईमेल में डाला जाएगा और मुझे भेजेंगे।फ़ाइल को वेबसर्वर

मेरा प्रश्न है: मैं इसे किसी भी स्थान पर संग्रहीत किए बिना फ़ाइल कैसे संलग्न कर सकता हूं।

मैं तीसरे पक्ष के मॉड्यूल का उपयोग नहीं करना चाहता।

अद्यतन:

$attachment = $_FILES["OrderList"]["tmp_name"]; 
$content = file_get_contents($attachment); 
$content = chunk_split(base64_encode($content)); 

मैं एक त्रुटि मिली:

Filename cannot be empty in C:\dir\orders\upload.php on line 24

लाइन 24 $content = file_get_contents($attachment);

+1

यह अपलोड, इसे संलग्न है, यह भेजने के लिए, इसे हटा दें। – Matt

+0

इसके बारे में, इसे अस्थायी रूप से सहेजें और फिर इसे हटाएं – amitchhajer

+0

PHP आपकी स्क्रिप्ट को शुरू होने से पहले अपलोड की गई फ़ाइल को एक tmp निर्देशिका में संग्रहीत करता है ताकि आप फाइल सिस्टम में फ़ाइल को सहेजने से बच सकें। –

उत्तर

3

आप पहले से ही यह संग्रहीत किया है जब आप PHP से फाइल अपलोड स्वीकार है।

बस इसे टीएमपी फ़ोल्डर में संग्रहीत करते समय इसका उपयोग करें।

आपकी स्क्रिप्ट समाप्त होने पर PHP स्वचालित रूप से आपके लिए इसे हटा देगा।

+0

लेकिन जब मैं '$ लगाव = $ _FILES [" ऑर्डरलिस्ट "] [" tmp_name "] का उपयोग करता हूं; $ सामग्री = file_get_contents ($ अनुलग्नक); $ सामग्री = chunk_split (base64_encode ($ सामग्री)); ' मुझे कोई त्रुटि मिली: फ़ाइल नाम फ़ाइल_get_contents में खाली नहीं हो सकता – triston

+0

क्या आपने $ संलग्नक प्रतिबिंबित किया था? इसने क्या कहा? क्या आप अपना कोड स्निपेट स्क्रिप्ट से चला रहे हैं जिसे अपलोड करने पर पोस्ट किया गया है? –

+0

मुझे php.ini में tmp_dir जोड़कर इसे ठीक किया गया है, नवीनतम PHP (5.3 से नया) डिफ़ॉल्ट tmp_dir सेट नहीं करता है। बहुत बहुत धन्यवाद। – triston

0

फ़ाइल अपलोड करके यह आपके सर्वर पर temp dir में सहेजा जाता है। अपवाद PUT विधि है, जिस स्थिति में फ़ाइल सीधे php: // इनपुट पर भेजी जाती है। उसके बाद, आप किसी भी PHP मेलिंग lib का उपयोग कर सकते हैं।

PHP manual for PUT'ing files

3

आज मैं इसी तरह की स्थिति में पड़ गए और एक समाधान मिल गया है, इसलिए यहाँ यह है

if ($_FILES["file"]["error"] > 0) { 
echo "Error: " . $_FILES["file"]["error"] . "<br>"; 
} else { 


$temp = explode(".", $_FILES["file"]["name"]); 
$extension = end($temp); 
$newname= $_FILES["file"]["tmp_name"].".".$extension; 
rename($_FILES["file"]["tmp_name"],$newname); 
$attachments = array($newname); 

    wp_mail('emailto send', 'title', 'message','',$attachments); 
} 
+0

हाँ आप सही हैं ..! यह सबसे आसान तरीका है। यदि आप मूल फ़ाइल नाम को रखना चाहते हैं तो आप नीचे के रूप में नाम बदल देंगे: नाम बदलें ($ _ FILES ["file"] ["name"], $ newname); – Invincible

संबंधित मुद्दे