现在我的json是从mysql中选择创建的,看起来像这样:
$sth->execute()
or die "SQL Error: $DBI::errstr\n";
while (my $row = $sth->fetchrow_hashref ){
push @output, $row;
# print $row->{image};
$photo = $row->{image};
my $file = "$photo";
my $document = do {
local $/ = undef;
open my $fh, "<", $file
or die "could not open $file: $!";
<$fh>;
};
my $encoded= MIME::Base64::encode_base64($document);
}
JSON看起来像这样:
{"myData":[{"favorited":null,"date":"2013-07-31","preferredMeetingLocation":"meet here","description":"Clothes desc","image":"/var/www/pictures/photo-7h1sIsXQ.jpg","id":"31","title":"clothing ","price":"12","category":"Clothing","isbn":null}]}
我想要做的是取代显示图像文件路径的位置,我希望将其更改为json字符串中每个对象的实际图像。最终我想将每个图像编码为base64,但我知道如何做到这一点。在这种情况下,我只需要帮助将/var/www/pictures/photo-7h1sIsXQ.jpg
更改为我可以使用和编码的内容。
答案 0 :(得分:0)
在编码之前更改$row->{image}
。
答案 1 :(得分:0)
正如daxim所说,你想在将数据结构编码为JSON之前替换图像数据。您需要使用MIME::Base64进行编码。结果可能类似于:
use MIME::Base64 qw(encode_base64);
use File::Slurp;
my $base64_encoded_image = encode_base64 scalar read_file($filename, binmode => ':raw');