【发布时间】:2014-08-22 00:48:23
【问题描述】:
我正在尝试将图像作为附件发送到表单上。
但是点击提交后,我看到"Sorry the server was unable to upload the files...".
如果有人知道原因,请告诉我。 提前谢谢你。
<?php
require("class.phpmailer.php");
$name = "the Submitter";
$email_subject = "photo Attachment";
$Email_msg ="A visitor submitted the following :\n";
$Email_to = "someone1@someone.com";
$email_from = "someone2@someone.net";
$dir = "uploads/$filename";
chmod("uploads",0777);
$attachments = array();
checkType();
function checkType() {
while(list($key,$value) = $_FILES[photo][type]){
strtolower($value);
if($value != "image/jpeg" AND $value != "image/pjpeg" AND $value != "") {
exit('Sorry , current format is <b>'.($value).'</b> ,only Jpeg or jpg are allowed.') ;
}
}
checkSize();
}
function checkSize(){
while(list($key,$value) = ($_FILES[photo][size]))
{
$maxSize = 5000000;
if(!empty($value)){
if ($value > $maxSize) {
echo"Sorry this is a very big file .. max file size is $maxSize Bytes = 5 MB";
exit();
}
else {
$result = "File size is ok !<br>";
}
}
}
uploadFile();
}
function uploadFile() {
global $attachments;
while(list($key,$value) = ($_FILES[photo][name]))
{
if(!empty($value))
{
$filename = $value;
$dir = "uploads/$filename";
chmod("uploads",0777);
$success = copy($_FILES[photo][tmp_name][$key], $dir);
}
}
if ($success) {
echo " Files Uploaded Successfully<BR>";
SendIt();
}else {
exit("Sorry the server was unable to upload the files...");
}
}
function SendIt() {
global $attachments,$name,$Email_to,$Email_msg,$email_subject,$email_from;
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Host = "localhost";
$mail->SMTPAuth = false;
$mail->From = $email_from;
$mail->FromName = $name;
$mail->AddAddress($Email_to);
$mail->AddReplyTo($email_from);
$mail->WordWrap = 50;
foreach($attachments as $key => $value) {
$mail->AddAttachment("uploads"."/".$value);
}
$mail->Body = $Email_msg."Name : ".$name."\n";
$mail->IsHTML(false);
$mail->Subject = $email_subject;
if(!$mail->Send())
{
echo "Message was not sent <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}
echo "Message has been sent";
foreach($attachments as $key => $value) {
unlink("uploads"."/".$value);
}
}
?>
【问题讨论】:
-
尝试使用
move_uploaded_file()代替copy()上传文件 -
加上这个
$success = copy($_FILES[photo][tmp_name]在内部和其他区域也缺少引号。这被视为constants。 -
请先从您的代码中删除所有与电子邮件相关的内容,并确保文件上传正常。只有在那之后才开始添加电子邮件功能。问题与电子邮件无关。
-
谢谢你现在它说不同的信息。
-
你是要告诉我们它是什么,还是我们必须猜测?