Не удается вставить изображения в базу данных с помощью wpdb

Я пытаюсь запустить этот код, чтобы получить ввод изображения из внешнего интерфейса. Я знаю, что не могу просто загружать изображения, используя только этот $_POST['img']. Я читал, что для этой цели я должен использовать file_get_contents(). Но я новичок в этом, я не знаю, как именно использовать file_get_contents()

Однако я пробовал этот код, но мне не удалось вставить его.

<form action="" method="post">
<label id="img">image: <input type="file" name="img" id='media'/></label>
<input type="submit" name="Submit" value="upload"/>

<?php

global $wpdb;
if($_POST['Submit']) 
{
$image=$_POST['img'];

if($wpdb->insert(
    'image',
    array(

            'image' => $image


        )
) == false) echo 'Database Insertion failed';
else echo 'Database insertion successful<p />';
}
?>

Это не сработало. После этого я попробовал это. Но пока безуспешно.

<form action="" method="post">
<label id="img">image: <input type="file" name="img" id='media'/></label>
<input type="submit" name="Submit" value="upload"/>

<?php

global $wpdb;
if($_POST['Submit']) 
{
$image=$_POST['img'];
$item = file_get_contents($_FILES['img']['tmp_name']);
if($wpdb->insert(
    'image',
    array(

            'image' => $item


        )
) == false) echo 'Database Insertion failed';
else echo 'Database insertion successful<p />';
}
?>

за это я получаю предупреждение Warning: file_get_contents(): Filename cannot be empty in C:\xampp\htdocs\kite\wp-content\plugins\php-code-widget\execphp.php(27) : eval()'d code on line 11

Кто-нибудь, пожалуйста, помогите мне.

И в моей базе данных в таблице "изображение" столбец "изображение" имеет тип данных BLOB, не уверен, что проблема в этом.

заранее спасибо


person kusum    schedule 19.11.2015    source источник


Ответы (1)


Для загрузки файлов вы должны добавить enctype="multipart/form-data"

<form enctype="multipart/form-data" action="" method="post">
      ^                           ^

Сначала загрузите в какую-нибудь папку, а затем используйте file_get_contents()

if (move_uploaded_file($_FILES['file']['tmp_name'], "your path". $_FILES["file"]['name'])) {
       // image will get uploaded here
}

Затем используйте

file_get_contents("new path")
person Niranjan N Raju    schedule 19.11.2015
comment
Большой! Это помогло! Я могу вставить сейчас! но когда я просматриваю свое изображение в базе данных и пытаюсь просмотреть его, я вижу, что изображение повреждено. Я могу видеть часть изображения, но не полностью. пожалуйста, предложите что-нибудь для этого. - person kusum; 19.11.2015
comment
изображение до вставки: imagebin.ca/v/2N3aTdaMsMYd скриншот изображения после вставки: imagebin.ca/v/2N3bIqDcRcqK - person kusum; 19.11.2015
comment
Я понял! проблема в том, что максимальный размер вставляемого файла составляет 64 КБ, поэтому мое изображение было нарушено. Спасибо за помощь. подскажите, если знаете, как увеличить размер вставляемых файлов. Я использую phpmyaddmin. - person kusum; 19.11.2015
comment
yopu напрямую хранит изображение в БД?? или только имя изображения в БД?? - person Niranjan N Raju; 19.11.2015
comment
Я напрямую сохраняю изображение - person kusum; 19.11.2015
comment
вместо этого сохраните имя изображения в db. И загрузите файл по этому пути. И доступ с этого пути. - person Niranjan N Raju; 19.11.2015
comment
Я новичок в этом, я не знаю, как именно это сделать. Можете ли вы предложить мне какое-либо руководство или учебник. Или, если вы можете помочь мне с общим синтаксисом, это было бы очень полезно. спасибо - person kusum; 19.11.2015