|
Автор |
Съобщение |
Нов
Регистриран на: 01/05/2010 12:36 pm
Support:
Bonus: 4
Мнения: 128
|
02/04/2018 2:45 pm
Форма за ъплоуд
|
|
|
Здравейте, Имам следния скрипт, който използвам за качване на снимка към базата. |
| if (isset($_FILES['file']['tmp_name'])) { $file = $_FILES['file']['tmp_name']; $image = addslashes(file_get_contents($_FILES['file']['tmp_name'])); $img_name = addslashes($_FILES['file']['name']);
move_uploaded_file($_FILES["file"]["tmp_name"],"uploads/avatar/" . $_FILES["file"]["name"]); $img_save ="uploads/avatar/" . $_FILES["file"]["name"];
} | | |
Вижда се, че е доста семпло и няма нищо особено.. Въпроса ми е, точно с този скрипт, как мога да огранича потребителя, да може да качва само снимки и нищо друго, защото с tag accept не се получи особено добре. Възможно ли е да се добави и конвертиране в избран размер направо тук, а не като проверка, защото бих искал да запазя старата снимка, ако новата такава не е по изискванията на скрипта? Поздрави. |
|
Върнете се в началото |
|
|
Support
Регистриран на: 17/04/2010 8:37 am
Support:
Bonus: 692
Мнения: 2612
|
02/04/2018 2:53 pm
|
|
|
Може да ползваш finfo. |
| if (isset($_FILES['file']['tmp_name'])) { $file = $_FILES['file']['tmp_name'];
//Тези за какво са? $image = addslashes(file_get_contents($_FILES['file']['tmp_name'])); $img_name = addslashes($_FILES['file']['name']);
$finfo = finfo_open(FILEINFO_MIME_TYPE); $mime_type = finfo_file($finfo, $file); if(in_array($mime_type, ['image/jpeg', 'image/png']) { move_uploaded_file($_FILES["file"]["tmp_name"],"uploads/avatar/" . $_FILES["file"]["name"]); $img_save ="uploads/avatar/" . $_FILES["file"]["name"]; } else { //Не е картинка } } | | |
Относно второто ти питане, ако файла не отговаря на изисквания (към момента съм сложила само png & jpg форматите), просто няма да презапише файла (а ти ако някъде пазиш името на снимката например в дб) и не ъпдейтвай дб. |
|
Върнете се в началото |
|
|
Нов
Регистриран на: 01/05/2010 12:36 pm
Support:
Bonus: 4
Мнения: 128
|
02/04/2018 3:24 pm
|
|
|
Fakeheal написа: | Може да ползваш finfo.
|
| if (isset($_FILES['file']['tmp_name'])) { $file = $_FILES['file']['tmp_name'];
//Тези за какво са? $image = addslashes(file_get_contents($_FILES['file']['tmp_name'])); $img_name = addslashes($_FILES['file']['name']);
$finfo = finfo_open(FILEINFO_MIME_TYPE); $mime_type = finfo_file($finfo, $file); if(in_array($mime_type, ['image/jpeg', 'image/png']) { move_uploaded_file($_FILES["file"]["tmp_name"],"uploads/avatar/" . $_FILES["file"]["name"]); $img_save ="uploads/avatar/" . $_FILES["file"]["name"]; } else { //Не е картинка } } | | |
Относно второто ти питане, ако файла не отговаря на изисквания (към момента съм сложила само png & jpg форматите), просто няма да презапише файла (а ти ако някъде пазиш името на снимката например в дб) и не ъпдейтвай дб. |
Здравейте,
Благодаря за времето, което отделяте, за да ми обърнете внимание! 
Там където сте написали // Тези за какво са, опитвах се да направя така, че да се качват с различно име в папката, но не успях и съм ги забравил. Премахнати са.
В момента получавам една грешка, на линията, на която е in_array
|
| Parse error: syntax error, unexpected '[' | | |
|
|
Върнете се в началото |
|
|
Support
Регистриран на: 17/04/2010 8:37 am
Support:
Bonus: 692
Мнения: 2612
|
02/04/2018 3:26 pm
|
|
|
С каква версия на PHP си?
|
|
Върнете се в началото |
|
|
Tourist Defender
Регистриран на: 01/10/2005 6:33 pm
Support:
Bonus: 951
Мнения: 2952
|
02/04/2018 3:27 pm
|
|
|
kini написа: | Fakeheal написа: | Може да ползваш finfo.
|
| if (isset($_FILES['file']['tmp_name'])) { $file = $_FILES['file']['tmp_name'];
//Тези за какво са? $image = addslashes(file_get_contents($_FILES['file']['tmp_name'])); $img_name = addslashes($_FILES['file']['name']);
$finfo = finfo_open(FILEINFO_MIME_TYPE); $mime_type = finfo_file($finfo, $file); if(in_array($mime_type, ['image/jpeg', 'image/png']) { move_uploaded_file($_FILES["file"]["tmp_name"],"uploads/avatar/" . $_FILES["file"]["name"]); $img_save ="uploads/avatar/" . $_FILES["file"]["name"]; } else { //Не е картинка } } | | |
Относно второто ти питане, ако файла не отговаря на изисквания (към момента съм сложила само png & jpg форматите), просто няма да презапише файла (а ти ако някъде пазиш името на снимката например в дб) и не ъпдейтвай дб. |
Здравейте,
Благодаря за времето, което отделяте, за да ми обърнете внимание! 
Там където сте написали // Тези за какво са, опитвах се да направя така, че да се качват с различно име в папката, но не успях и съм ги забравил. Премахнати са.
В момента получавам една грешка, на линията, на която е in_array
|
| Parse error: syntax error, unexpected '[' | | |
|
Тази грешка която получаваш е защото си се по-стара версия на PHP-то.
този ред
|
| if(in_array($mime_type, ['image/jpeg', 'image/png']) { | | |
трябва да стане на |
| if(in_array($mime_type, array('image/jpeg', 'image/png'))) { | | |
В по-новите версии на PHP (мисля че беше PHP 7 +) можеш да декларираш масиви с квадратни скоби: |
| $array = ['apple', 'banana']; | | |
Последната промяна е направена от deam0n на 02/04/2018 3:47 pm; мнението е било променяно общо 1 път |
|
Върнете се в началото |
|
|
Нов
Регистриран на: 01/05/2010 12:36 pm
Support:
Bonus: 4
Мнения: 128
|
02/04/2018 3:41 pm
|
|
|
И аз си го помислих, за това се опитах да търся решение в мрежата. В момента версията е 5.2, само защото ми е по-удобно да работя на локалната машина, докато бъде завършена работата. Промених и въпросния ред, както ми казахте, но сега излиза |
| Parse error: syntax error, unexpected '{' | | |
 |
|
Върнете се в началото |
|
|
Нов
Регистриран на: 08/10/2016 4:31 pm
Support:
Bonus: 8
Мнения: 116
|
02/04/2018 3:44 pm
|
|
|
Най-вероятно си изпуснал скоба
|
|
Върнете се в началото |
|
|
Support
Регистриран на: 17/04/2010 8:37 am
Support:
Bonus: 692
Мнения: 2612
|
02/04/2018 3:48 pm
|
|
|
За тази версия дори не знам дали finfo е включено в дефолтния билд. 5.4+ се изисква са краткия синтаксис на масивите  |
|
Върнете се в началото |
|
|
Нов
Регистриран на: 08/10/2016 4:31 pm
Support:
Bonus: 8
Мнения: 116
|
02/04/2018 3:51 pm
|
|
|
Според документацията не е... защо изобщо ползваш 5.2? Кой изобщо ползва 5.2 като цяло?
|
|
Върнете се в началото |
|
|
Нов
Регистриран на: 01/05/2010 12:36 pm
Support:
Bonus: 4
Мнения: 128
|
02/04/2018 4:00 pm
|
|
|
pix3l написа: | Според документацията не е... защо изобщо ползваш 5.2? Кой изобщо ползва 5.2 като цяло? |
Fakeheal написа: | За тази версия дори не знам дали finfo е включено в дефолтния билд.
5.4+ се изисква са краткия синтаксис на масивите  |
Ъпгрейднах до последното обновяване на 5.6 (качено преди два дни), но все още не се получава. Замислям се, дали да не сменям целия скрипт, макар, че не ми трябва нищо по-дълго и излишно |
|
Върнете се в началото |
|
|
Нов
Регистриран на: 08/10/2016 4:31 pm
Support:
Bonus: 8
Мнения: 116
|
02/04/2018 6:08 pm
|
|
|
Кое не се получава? Ако е грешката по-горе, сигурно си изпуснал скоба.
|
|
Върнете се в началото |
|
|
|