$imgData = base64_encode(file_get_contents('F:\images\home\pic.jpg'));
以上是我的本地主机路径。对于本地主机,它正在运行。
但是,我怎样才能在远程服务器上获取它?
我还没有使用过FTP。请指导我。
我需要单独获取图像的内容。我不需要将文件上传到远程服务器。
答案 0 :(得分:0)
由于\
目录分隔符,您似乎在Windows计算机上进行开发。最佳做法是使用正斜杠/
,因为它可以在Windows和Linux上运行,如果使用相对路径(引用根目录的路径称为绝对路径。参考当前目录称为relative)。你应该尽可能地使用相对路径。
示例:
F:/images/home/pic.jpg
是绝对路径。注意我换了你的
带有forwardslash \
的反斜杠/
。http://www.example.com/images/pic.png
是绝对路径。./pic.jpg
是相对路径,相当于pic.jpg
../images/pic.jpg
我是一个相对路径(..
表示您已退出当前文件夹,进入图像文件夹所在的工作目录。)在远程(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客户端:
在这种情况下,在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
);
然后您可以使用类似的内容在数据库中插入图像(使用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();