Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Ошибка при загрузке изображения
 
 автор: AlexanderCh   (22.11.2016 в 13:08)   письмо автору
 
 

Здравствуйте!

Написал html

<!DOCTYPE html PUBLIC"-//W3C//DTD XHTML1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html"; charset="utf-8"/>
        <title> Загрузка изображения
        </title>
    </head>
    <body>
    <h1>Загрузка изображения</h1>
        <form name="downloadpics" enctype="multipart/form-data" method="post" action="obr_pics.php">
            <input type="hidden" name="MAX_FILE_SIZE" value="2000000"/>
            <label for="user_pic">Отправка изображениея: </label><br />
            <input type="file" name="user_pic" size="30" /><br />
            <input type="submit" name="send" value="Отправить"/><br />
        </form>
    </body>
</html> 


Написал запрос:

if($_SERVER['REQUEST_METHOD'] == 'POST') {
    if (!empty($_FILES['user_pic']['name'])){
            if($_FILES['user_pic']['error'] == 0){
                    if(substr($_FILES['user_pic']['type'], 0, 5) == 'image'){
                            $image = file_get_contents($_FILES['user_pic']['tmp_name']);
                            $image = mysqli_escape_string($image);
                            $mysqli->query("INSERT INTO `pics`(`pics`, `date`) VALUES('".$image."', '".time()."')");
                            } else {
                                echo "Don\'t download";
                                }
                    } else {
                        echo "Is error";
                        }
            } else {
                echo "Is empty";
                }
    } else {
        echo "Not up1";
        }
    $mysqli->close();


Выдало ошибку - empty - то есть пусто

//if($_SERVER['REQUEST_METHOD'] == 'POST')
    if (isset($_POST['send']) && $_FILES['user_pic']['name'] > 0) {
    if (!empty($_FILES['user_pic']['name'])){
            if($_FILES['user_pic']['error'] == 0){
                    if(substr($_FILES['user_pic']['type'], 0, 5) == 'image'){
                            $image = file_get_contents($_FILES['user_pic']['tmp_name']);
                            $image = mysqli_escape_string($image);
                            $mysqli->query("INSERT INTO `pics`(`pics`, `date`) VALUES('".$image."', '".time()."')");
                            } else {
                                echo "Don\'t download";
                                }
                    } else {
                        echo "Is error";
                        }
            } else {
                echo "Is empty";
                }
    } else {
        echo "Not up1";
        }
    $mysqli->close();

Выдало - not up1

Похоже файл в браузер не загружается вообще, хотя пишется что загружен

Пробовал обычные комманды в php чтобы перенести файл в директорию , тоже пусто

В разных браузерах делал - все одно

Что нужно сделать?

  Ответить  
 
 автор: elenaki   (22.11.2016 в 16:58)   письмо автору
 
   для: AlexanderCh   (22.11.2016 в 13:08)
 

В базу надо грузить не сам файл, а путь к нему.
А файлы грузятся функцией
move_uploaded_file()

  Ответить  
 
 автор: AlexanderCh   (24.11.2016 в 00:29)   письмо автору
 
   для: elenaki   (22.11.2016 в 16:58)
 

Не буду спорить , что нужно грузить, а что не нужно.

Выкладываю решение, может кому-то пригодится:

if (!empty($_FILES['user_pic']['name'])){
            if($_FILES['user_pic']['error'] == 0){
                    if(substr($_FILES['user_pic']['type'], 0, 5) == 'image'){
                            $image = file_get_contents($_FILES['user_pic']['tmp_name']);
                            $image = $mysqli->real_escape_string($image);
                            $mysqli->query("INSERT INTO `pics`(`pics`, `date`) VALUES('".$image."', '".time()."')");
                            } else {
                                echo "Don\'t download";
                                }
                    } else {
                        echo "Is error";
                        }
            } else {
                echo "Is empty";
                }
    } else {
        echo "Not up1";
        }
    $mysqli->close();

  Ответить  
 
 автор: confirm   (24.11.2016 в 03:43)   письмо автору
 
   для: AlexanderCh   (24.11.2016 в 00:29)
 

Понимающий это обойдет стороной.

Проверять загрузку нужно с ошибок, и смысл проверять оригинальное имя файла, если оно не используется?
real_escape_string к изображению зачем и при этом даже не проверяя, что загружено именно изображение?

Ну а о том, что такое хранение изображений, это "закакать" базу, сделав ее неповоротливой, уже сказано, но коли считаете это разумным, то и флаг в руки.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования