2012-08-03 7 views
6

Kullanıcının bir dosyayı "upload etmesine" izin veren basit bir form ve bir yorum kutusu oluşturuyorum. kullanıcı dosyayı seçtikten sonra (görüntü veya pdf olabilir) ve gönder 'i tıklatın, dosyayı web sunucuma kaydedemeyeceğim, dosya bir e-postaya eklenecek ve bana gönderilecektir.php ile eki içeren e-postayı web sunucusuna kaydetmeden e-posta gönder

Sorum şu: Dosyayı herhangi bir yere kaydetmeden nasıl ekleyebilirim?

Üçüncü taraf modülünü kullanmak istemiyorum.

Güncelleme:

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

bir hata var:

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

hat 24 PHP dosya yüklemeyi kabul ettiğimizde Bunu zaten depolamış $content = file_get_contents($attachment);

+1

silin gönderebilir takarak, onu yükle olduğunu benzer bir durum ile karşılaştım ve bir çözüm buldum. – Matt

+0

hakkında, geçici olarak kaydedin ve sonra silin – amitchhajer

+0

PHP, betikiniz başlamadan önce bir tmp dizininde yüklenen dosyayı depolar, böylece dosyayı dosya sistemine kaydetmekten kaçınamazsınız. –

cevap

3

olduğunu.

Sadece tmp klasöründe saklandığında kullanın.

Komut dosyanız bittiğinde PHP sizin için otomatik olarak silinecektir.

+0

ama '$ attachment = $ _FILES [" OrderList "] [" tmp_name "] kullandığımda; $ content = file_get_contents ($ attachment); $ content = chunk_split (base64_encode ($ content)); Bir hatam var: file_get_contents içinde dosya adı boş olamaz – triston

+0

Ek eklediniz mi? O ne dedi? Kod snippet'inizi, yüklediğinizde yayınlanan komut dosyasından mı çalıştırıyorsunuz? –

+0

php.ini dosyasında tmp_dir eklenerek düzeltildi, en son php (5.3'ten daha yeni) tmp_dir varsayılanını ayarlamıyor. çok teşekkürler. – triston

0

Bir dosya yükleyerek sunucunuza geçici olarak kaydedilir. İstisna, PUT yöntemidir, bu durumda dosya doğrudan php: // girişine gönderilir. Bundan sonra, tercih ettiğiniz herhangi bir PHP posta kütüphanesini kullanabilirsiniz.

PHP manual for PUT'ing files

3

Bugün ben işte o

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

Evet haklısın ..! Bu en kolay yol. Orijinal dosya adını saklamak istiyorsanız, aşağıdaki gibi yeniden adlandırın: rename ($ _ FILES ["file"] ["name"], $ newname); – Invincible

İlgili konular