[英]Upload/download/save image to a local server from a remote server using an Image URL and PHP?
[英]Retrieving image content in PHP from local server and save in remote server
$imgData = base64_encode(file_get_contents('F:\images\home\pic.jpg'));
以上是我的本地主机路径。 对于本地主机,它正在工作。
但是,如何在我的远程服务器上获取它?
我尚未使用FTP。 请指导我。
我只需要获取图像的内容。 我不需要将文件上传到远程服务器。
由于\\
目录分隔符,您似乎在Windows计算机上进行开发。 最佳做法是使用正斜杠/
因为它在Windows和Linux上都可以使用 , 前提是您使用相对路径 (参考根目录的路径称为绝对路径。参考当前目录的路径称为相对路径)。 您应该尽可能使用相对路径。
例:
F:/images/home/pic.jpg
是绝对路径。 注意,我将您的反斜杠\\
替换为正斜杠/
。 http://www.example.com/images/pic.png
是绝对路径。 ./pic.jpg
是相对路径,等效于pic.jpg
../images/pic.jpg
一个相对路径( ..
表示您已经退出当前文件夹,也进入了images文件夹所在的工作目录)。 在远程(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,FTP软件将向您显示图像的路径,但是您需要根据您的工作目录路径对其进行调整。 此图像来自Filezilla,这是一个开放源代码FTP客户端:
在这种情况下,在您在Filezilla中看到的/home/bg29ll/public_html/food2/images
中, food2
是您的工作目录,因此您只需要使用:
$imgData = base64_encode(file_get_contents('images/pic.jpg'));
您可能还会在您的php代码中包含以下行,并在您的服务器上运行它:
print_r( dirname(__FILE__) );
这会让您知道您的绝对路径是什么。
编辑:要将图像保存在数据库中(尽管我建议将图像上传到服务器,并且仅将位置/名称保存到数据库中),您必须使用blob
列类型(其变体之一, TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB
)。 Mediumblob允许的文件大小最大为16 MB。
CREATE TABLE images (
id INT AUTO_INCREMENT PRIMARY KEY,
mime VARCHAR (255) NOT NULL,
data MEDIUMBLOB NOT NULL
);
然后,您将使用类似这样的方式在DB中插入图像(使用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();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.