$imgData = base64_encode(file_get_contents('F:\images\home\pic.jpg'));
Вышеупомянутый мой локальный путь. Для локального хоста он работает.
Но как я могу получить его на своем удаленном сервере?
Я не работал на FTP. Пожалуйста, направляйте меня.
Мне нужно получить содержимое изображения в одиночку. Мне не нужно загружать файл на удаленный сервер.
Кажется, что вы работаете на 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 с открытым исходным кодом:
В этом случае в /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();