jaskowice1
16.06.2014, 22:05:19
Witam
Mam problem z dodaniem załącznika do phpmailera. Potrzebuję by ten załącznik był ładowany z inputa, żeby dało się wgrać tylko pliki .doc, .docx, .pdf i po wszystkim to jest wysyłane na maila.
Link do jakiegoś przykładu można, bo co znajdę to nie działa mi, coś muszę źle robić - tylko nie wiem co :/
Czekam na odpowiedź
nospor
17.06.2014, 07:25:05
1) No to jesli to co masz ci nie dziala to pokaz co masz.... wywrozyc to mamy sobie i poprawic ci kod w myslach?
2) Ale rozumiesz, że najpierw plik musi byc poprawnie wgrany na serwere? Tu masz napisane jak sie robi upload
http://pl1.php.net/manual/en/features.file...post-method.php
jaskowice1
17.06.2014, 10:16:01
Mam coś takiego:
if ($_FILES) {
$plik_tmp = $_FILES['file']['tmp_name'];
$plik_nazwa = $_FILES['file']['name'];
$target_path = "uploads/";
$target_path = $target_path . basename( $_FILES['file']['name']); echo "Plik: <strong>$plik_nazwa</strong>został przesłany na serwer!<br/><br/>";
}
}
$mail->AddAttachment("uploads/".basename( $_FILES['file']['name']));
Chciałbym teraz dodać do tego filtracje, żeby wysyłało tylko pliki .pdf, .doc, .docx - jak to zrobić ?
Turson
17.06.2014, 10:19:48
Sprawdzaj mime-type i rozszerzenie.
jaskowice1
17.06.2014, 10:37:00
W której części ? Ja troszku początkujący jestem w tych sprawach.
Turson
17.06.2014, 10:40:02
Jeszcze przed move_uploaded_file.
Mime type pobierzesz
getimagesize a rozszerzenie sprawdzić
explode rozbijając nazwę pliku po kropkach i sprawdzając ostatni lement tablicy
end
jaskowice1
17.06.2014, 10:55:41
A dlaczego coś takiego mi nie działa ?
if ($_FILES['file']['type'] == 'application/msword' || $_FILES['file']['type'] == 'application/pdf') {
$mail->MsgHTML($email_message);
$mail->AddAttachment("uploads/".basename( $_FILES['file']['name'])); }
else {
echo("<div style='clear:both; width:400px; margin: 0 auto;color:#bab8c6;'>Możesz przesłać tylko pliki .pdf, .doc lub .docx</div>"); }
Turson
17.06.2014, 10:59:52
Sprawdź sobie dla testów jaki type ma wysyłany plik, dając przed warunkiem np.
echo 'file type: '.$_FILES['file']['type'];
jaskowice1
17.06.2014, 11:16:39
Ok dzięki, miałem
application/vnd.openxmlformats-officedocument.wordprocessingml.document
a jeszcze pytanie mam, jak zrobić żeby nie wysyłało formularza jak są puste pola ? Bo teraz mi wysyła z pustymi polami nawet, a mam walidacje w jquery
Turson
17.06.2014, 11:29:49
php
if(!empty($_FILES['file']['name'])){ //ok
}
else{
//puste
}
co do walidacji jquery to wrzuć na jsfiddle jak masz
jaskowice1
17.06.2014, 11:49:18
http://jsfiddle.net/xP7ey/Nie ma tu niektórych styli.
Turson
17.06.2014, 11:52:27
Zobacz w konsoli przeglądarki czy nie sypie jakimś błędem
jaskowice1
17.06.2014, 11:57:48
Może być tak zrobiony warunek ?
if(!empty($_POST[miasto
]) && !empty($_POST[imie
]) && !empty($_POST[telmail
]) && !empty($_POST[doswiadczenie
]) && !empty($_POST[textarea
]) && !empty($_FILES['file']['name'])){
jaskowice1
17.06.2014, 12:02:37
if(!empty($_POST[miasto
] && $_POST[imie
] )
..itd ?
Turson
17.06.2014, 12:12:14
Tak, miasto, imie itd. Każdy