2015-08-26 1 views
0
<?php 
$msg = ''; 
if (array_key_exists('userfile', $_FILES)) 
    //$uploadfile = tempnam(sys_get_temp_dir(), sha1($_FILES['userfile']['name'])); 

     $fileName = $_FILES["userfile"]["name"]; 
    $fileTmpLoc = $_FILES["userfile"]["tmp_name"]; 

     $pathAndName = "uploads/".$fileName; 
     $moveResult = move_uploaded_file($fileTmpLoc, $pathAndName); 

    if ($moveResult == true) { 
     // Upload handled successfully 
     // Now create a message 
     // This should be somewhere in your include_path 
     require_once '/home/jaydeepkanada/public_html/phpMailer/PHPMailer-master/PHPMailerAutoload.php'; 
     $mail = new PHPMailer; 
     $mail->setFrom('[email protected]', 'Mail From Website'); 
     $mail->addAddress('[email protected]', 'Jaydeep Kanada'); 
     $mail->Subject = 'PHPMailer file sender'; 
     $mail->msgHTML("My message body"); 

     $allowedExts = array("doc", "docx", "pdf"); 
    $extension = end(explode(".", $_FILES["userfile"]["name"])); 
     if (in_array($extension, $allowedExts)) 
     { 
      $mail->addAttachment($uploadfile, $_FILES["userfile"]["name"]); 
       if (!$mail->send()) { 
        $msg = "Mailer Error: " . $mail->ErrorInfo; 
       } else { 
        $msg = "Message sent!"; 
       } 

     }else{ 
      die("File type not supported. Only PDF or DOC."); 
     } 
    } else { 
     $msg = 'Failed to move file to ' . $uploadfile; 
    } 
} 
?> 
<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"/> 
    <title>PHPMailer Upload</title> 
</head> 
<body> 
<?php if (empty($msg)) { ?> 
    <form method="post" enctype="multipart/form-data"> 
     <input type="hidden" name="MAX_FILE_SIZE" value="100000"> Send this file: <input name="userfile" type="file"> 
     <input type="submit" value="Send File"> 
    </form> 
<?php } else { 
    echo $msg; 
} ?> 
</body> 
</html> 

hi gys..i новый в php и только обучение. Я использую php mailer для отправки почты с вложениями, и в этом коде путь правильный, но он всегда показывает Faild для перемещения пути. может any1 помочь мне. Thnx заранее ..не удалось переместить файл с tmp_dir на server_dir

+0

Установили ли вы права доступа к каталогам на '777' – madforstrength

+0

Программное обеспечение, которое ha ndles запрос на обработку сценария выше (вероятно, apache, www-data или что-то в этом влиянии), должен быть владельцем каталога, в котором будут храниться файлы. В противном случае вам нужно будет убедиться, что 'группа', принадлежащая' user', которая обрабатывает указанный выше сценарий (apache, www-data и т. Д.), Имеет ту же группу, что и пользователь, которому принадлежит папка (upload) где данные будут сохранены, и могут оба читать ** и ** писать (umask: 06 ** 6 ** 4), где вторая ** 6 ** представляет флаг 'rw + 'для группы. – Ohgodwhy

+0

Вы не проверяете '$ _FILES [" userfile "] ['error']', чтобы убедиться, что загрузка была успешно завершена? – RiggsFolly

ответ

0

Используйте правую Convertion по размеру файла значения MAX_FILE_SIZE, что-то вроде 10485760

Проблемы этого значения внутри тега <input type="hidden" name="MAX_FILE_SIZE" value="100000"> быть в байтах Загруженный может быть больше, чем 97kbytes (100000 байт = > 97,66 кбайт), что приводит к ошибке системы (если вы посмотрите на файл $ _FILES ["userfile"] ['error'] или $ _FILES ["userfile"] ['error'] [0], вы увидите что дает вам ошибку 2, что означает: «Загруженный файл превышает директиву MAX_FILE_SIZE, указанную в HTML-форме».

Смежные вопросы