所以,我向cURL发出了一个POST请求:

<?php

$url = 'http://url/to/site';

$data = array(
  "tk" => $_GET["tk"]
);

$ch = curl_init($url);
//seteamos la petición
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FAILONERROR, true);

$response = curl_exec($ch);

if (curl_errno($ch)) {
  $response = curl_error($ch);
}

curl_close($ch);
echo $response;

在另一个站点中,我正在使用tk进行数据库搜索,然后发送一个响应:

$bs = new lecRed; //lecRed it's a class I created and used before

$tk = $_POST["tk"];

$rspta = $bs->searchByTK($tk)->fetchObject();//here I retrieve the info from the DB
$arr = array(
  "id"      => $rspta->ide,
  "name"  => $rspta->name,
  "adsc"  => $rspta->adsc,
  "pic" => $rspta->pic
);

echo "<h1>ID: " . $arr["id"] . "</h1>";
echo "<h1>NAME: " . $arr["name"] . "</h1>";
echo "<h1>ADSC: " . $arr["adsc"] . "</h1>";

到目前为止,它运行得很好.但现在我想"呼应"这张照片.我将图像放在服务器中(与上一个php文件的路径相同).

我试着go 做:

echo "<img src='".$arr["pic"]."' />";

但这并没有奏效.我还试过:

$file = 'img/' . $arr["pic"];
$type = 'image/jpeg';
header('Content-Type:' . $type);
header('Content-Length: ' . filesize($file));
readfile($file);

但它只显示了这样一个奇怪的人物:

weird ascii(i guess) characters

我试过这个:

$file = 'img/' . $arr["pic"];

if (file_exists($file)) {
  header('Content-Description: File Transfer');
  header('Content-Type: application/octet-stream');
  header('Content-Disposition: attachment; filename=' . basename($file));
  header('Content-Transfer-Encoding: binary');
  header('Expires: 0');
  header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  header('Pragma: public');
  header('Content-Length: ' . filesize($file));
  ob_clean();
  flush();
  readfile($file);
  exit;
}

但它更多的是一样的.

我还try 使用de gd库:

header('content-type: image/jpeg');
$image_file_path = "img/" . $arr["pic"];

switch (pathinfo($image_file_path)['extension']) {
  case 'png':
    $image = imagecreatefrompng($image_file_path);
    break;
  case 'gif':
    $image = imagecreatefromgif($image_file_path);
    break;
  default:
    $image = imagecreatefromjpeg($image_file_path);
}

echo imagejpeg($image);
imagedestroy($image);

但这一切都没有奏效.我别无 Select .有谁知道吗?

推荐答案

一种解决方案是使用"数据URL":<img src="data:...

https://www.w3docs.com/snippets/html/how-to-display-base64-images-in-html.html

使用Base64编码的图像可以嵌入到HTML中 标签.这有助于增加较小图像的页面加载时间 通过避免浏览器发出额外的HTTP请求.

Base64编码和数据URL齐头并进,因为数据URL减少了 浏览器显示所需的HTTP请求数 Html文档.

<img>标记具有src属性,并包含 形象.数据URL由两部分组成,由 逗号.第一部分指定Base64编码图像,第二部分指定Base64编码图像 Part指定图像的Base64编码字符串.

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4
  //8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot" />

此链接有几个使用PHP base64_encode()的示例:

Php相关问答推荐

无法使用PHP DomDocument找到IMG元素

try 修改这个PHP代码如果语句在WordPress""

WooCommerce购物车中仅允许一个可下载产品

WooCommerce我的帐户:从帖子作者处获取自定义帖子类型帖子ID

将客户重定向到自定义感谢页后的空白页

哪里的表现能更好?

Laravel Carbon DiffForHumans选项(年,月,天)

将可编辑的计费自定义字段添加到 WooCommerce 管理单个订单

如何在 Woocommerce 中自动删除旧的已完成订单

woocommerce checkout 页面上的自定义字段

将 WooCommerce 0 销售价格替换为自定义文本,并保留常规价格删除线

带有分类术语数组的 WordPress Elementor 自定义查询 - 如何要求所有术语都在返回的帖子中

Symfony:指定 data_class 时,提交的表单获取初始化前不得访问

在 WordPress 中使用 $wpdb 运行 MySQL 事务是否安全?

docker |管道失败的 ubuntu 源列表

我试图在我的视图上显示从数据库中获取的数据,但我无法显示它.拉维尔 10.x /

Laravel 查询关系是否为 bool

PHP 自动函数参数和变量

fopen 功能不断向我发送我重新加载网页时已发布的重复版本的表单

检测字符串是否包含Letter with Tilde或Letter + Combining Tilde