Получение содержимого изображения в PHP с локального сервера и сохранение на удаленном сервере.

0
$imgData = base64_encode(file_get_contents('F:\images\home\pic.jpg')); 

Вышеупомянутый мой локальный путь. Для локального хоста он работает.

Но как я могу получить его на своем удаленном сервере?

Я не работал на FTP. Пожалуйста, направляйте меня.

Мне нужно получить содержимое изображения в одиночку. Мне не нужно загружать файл на удаленный сервер.

1 ответ

0

Кажется, что вы работаете на Windows-машине из-за разделителя \ directory. Лучше всего использовать forward-slash / поскольку он будет работать как на Windows, так и на Linux, если вы используете относительные пути (путь со ссылкой на корневой каталог называется абсолютным. Путь со ссылкой на текущий каталог называется относительным). Вы должны стремиться использовать относительные пути, когда это возможно.

Пример:

  • F: /images/home/pic.jpg - это абсолютный путь. Заметьте, что я заменил вашу обратную косую черту \ на forwardlash /.
  • http://www.example.com/images/pic.png - это абсолютный путь.
  • ./pic.jpg - относительный путь и эквивалентен pic.jpg
  • ../images/pic.jpg ia относительный путь (.. означает, что вы вышли из текущей папки, введя рабочий каталог, в котором находится папка с изображениями).

На удаленном (Linux) сервере вам нужно будет знать относительный путь

Предположим, что ваш удаленный сервер - это сервер linux/apache. Может быть, вы также должны пометить свой вопрос с помощью apache вместо javascript/angular?

Вы должны определить относительный путь к вашему изображению и использовать приведенные выше примеры, чтобы переписать код на что-то вроде этого:

$imgData = base64_encode(file_get_contents('../images/home/pic.jpg'));

Вы также можете использовать абсолютный путь (http://www.example.com/images/pic.png), но это не всегда возможно или рекомендуется.

Как найти относительный путь к вашему изображению? Существует несколько способов сделать это, используя PHP, SSH или FTP. Ваше программное обеспечение FTP покажет вам путь к вашему изображению, если вы перейдете к нему, но вам нужно адаптировать его к своему рабочему пути. Это изображение от Filezilla, клиент FTP с открытым исходным кодом:

Изображение 174551

В этом случае в /home/bg29ll/public_html/food2/images который вы видите в Filezilla, food2 - это ваш рабочий каталог, поэтому вам нужно будет использовать только:

$imgData = base64_encode(file_get_contents('images/pic.jpg'));

Вы также можете включить эту строку в свой php-код и запустить ее на своем сервере:

print_r( dirname(__FILE__) );

Это позволит вам узнать, каков ваш абсолютный путь.

EDIT: сохранить изображение в базе данных (хотя я бы рекомендовал загружать изображения на сервер и сохранять только местоположение/имя в БД), вам нужно будет использовать тип столбца blob (один из его вариантов: TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB). Mediumblob позволит размер файлов до 16 МБ.

CREATE TABLE images (
    id   INT           AUTO_INCREMENT PRIMARY KEY,
    mime VARCHAR       (255) NOT NULL,
    data MEDIUMBLOB          NOT NULL
);

Затем вы использовали бы что-то подобное, чтобы вставить изображение в БД (используя PDO):

    $blob = fopen($filePath, 'rb');

    $sql = "INSERT INTO files(mime,data) VALUES(:mime,:data)";
    $stmt = $this->pdo->prepare($sql);

    $stmt->bindParam(':mime', $mime);
    $stmt->bindParam(':data', $blob, PDO::PARAM_LOB);

    $stmt->execute();
  • 0
    ЭТО РАБОТАЕТ...
  • 0
    @athi, рад, что смог помочь :) Можете ли вы поднять голос и отметить его как принятый?
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню