PHP - конвертировать URL изображения в SQL BLOB - PullRequest
0 голосов
/ 08 апреля 2020

Я программирую с PHP и использую XAMPP для Apache и MySQL.

Я два дня искал и пытался преобразовать URL-адрес изображения в двоичную переменную. После этого процесса я пытаюсь вставить его как BLOB в таблицу базы данных SQL.

Я пробовал несколько подходов (не включены ниже), таких как base64 () , file_get_contents () , сохранить файл изображения или даже cURL ...

Вот изображение структуры таблицы базы данных SQL : enter image description here

и вот «психоделический умопомрачительный c» PHP код:

<?php 
    // APPROACH #1
    $blob = file_get_contents('http://www.domainname.com/random/page/IMAGE.png');

    // APPROACH #2
    $bin = base64_encode($blob);

    // INSERT INTO QUERY
    $stmt = $db->prepare("INSERT INTO imagezzz (id_link, imagez) VALUES (?,?)");

    // APPROACH #1
    $stmt->bind_param("ib", $number, $blob);

    // APPROACH #2
    $stmt->bind_param("ib", $number, $bin);

    $stmt->execute();
?>

Когда запрос выполняется, он выдает без ошибок . Фактически выполняется запрос INSERT и добавляется новая строка таблицы . Первое и второе поля ( id [int] и id_link [int]) содержат данные, но третье поле ( imagez [BLOB]) пусто.

Я выполнил SQL INSERT QUERY внутри phpMyAdmin (загрузив локальное изображение), и он отлично работает ...

1 Ответ

2 голосов
/ 08 апреля 2020

Если вы можете получить файл с file_get_contents, это должно работать:

$blob = file_get_contents('http://www.domainname.com/random/page/IMAGE.png');
print "Image is " . strlen($blob) . " bytes long\n";
$bin  = base64_encode($blob);
$estimate = round(strlen($blob)/0.75);
print "Blob is " . strlen($bin) . " bytes long (expecting about {$estimate}\n";
$stmt = $db->prepare("INSERT INTO imagezzz (id_link, imagez) VALUES (?,?)");
$stmt->execute([ $number, $bin ]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...