2011-07-14 10 views
2

を送る:phpmailerのは、こんにちは、私はphpmailerのスクリプトで名=「FILE1」とコードとファイルアップロードフィールドを持つ添付ファイル名ではなく、添付ファイル

if (isset($_FILES['file1'])) 
{ 
$file1_path = $_FILES['file1']['tmp_name']; 
$file1_name = $_FILES['file1']['name']; 
$file1_type = $_FILES['file1']['type']; 
$file1_error = $_FILES['file1']['error']; 
$mail->AddAttachment($file1_path); 
} 

をそして、いくつかの理由で、それはphp45we34のように(各時間差分を添付、その実際のファイルではなく、その一時的な名前のパスと思われる)

助けてください?

答えて

1

添付ファイルを追加する前にmove_uploaded_file関数を使用することをお勧めします。

これは正常に動作する必要があり、そのAddAttachment後にサーバー

$target_path = "uploads/"; 

$target_path = $target_path . basename($_FILES['uploadedfile']['name']); 

if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) { 
    echo "The file ". basename($_FILES['uploadedfile']['name']). 
    " has been uploaded"; 
} else{ 
    echo "There was an error uploading the file, please try again!"; 
} 

でどこかに一時的な場所からファイルを移動するサンプルコードです。

$mail->AddAttachment(basename($target_path . $_FILES['uploadedfile']['name'])); 
+0

これはすばらしそうです。唯一のことは、私は多くのファイルアップロードをしたいということです。 (ファイル1、ファイル2、ファイル3)。 PHPのコードブロックを一度だけ実行する方法はありますか? –

+0

@ user845311フォームの各ファイルに異なる名前属性を使用できます(例: 'file1'、' file2'などを使用し、サーバ側では 'foreach($ _FILES as $ key => $ file){...}'のようなループを使い、ループの中では '$ file ['tmp_name '] 'など。 – ovi

+0

@Ovidiu Ok i gotcha。しかし、私は.basename($ _ FILES ...?と追加添付ファイルのために何を使用するのですか? –

2

ファイル名の空白を削除してください!

Blue hills.jpgBlue_hills.jpg

は何を参照してください

$fileName = str_replace(' ', '_', $fileName);

+1

ようこそスタックオーバーフロー!=) –

+0

これは実際にOPの問題とは関係ありませんが、それは良い提案です。+1 – LSerni

1

を行うべきであるどうするかです。 You do not specify the attachment nameなので、phpMailerは添付しているテンポラリファイルの名前を使用します。

ファイルの名前を変更したい場合は、ファイル名を指定する必要があります。受け入れられた回答は、それが逆に進むために機能します。ファイル名が変更され、ファイル名が変更されます。

続行する通常の方法は、添付ファイル名を上書きする

$mail->AddAttachment($file1_path, $_FILES['file1']['name']); 

を発行することです。

関連する問題