0

我有一个带有表的 MySQL 数据库,该表具有以下字段:

txtProductBowlImage:示例“ C:\BowlPhotos\Thumbs\MapleTi07-030tmb.jpg”

我想使用该字段中的数据来生成可以打印到文本文件的图像。

我读取数据然后尝试将其回显到屏幕上……我看到一个小图标,但没有图像。

这是代码:

    <?php
 $con = mysql_connect("localhost","xxxxxxx","zzzzzzzzzzzzzzz");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("scwdb", $con);

$result = mysql_query("SELECT * FROM tblsplintersbowlinventory WHERE txtVenue = 'Shoreline'");

while($row = mysql_fetch_array($result))
  {
  echo $row['intProductID'] . " " . $row['txtProductBowlCode'] . " " . $row['txtProductBowlImage'] . "]";
  echo "<br />";
  echo "<br />";
  echo 'txtProductBowlImage: ' . $row['txtProductBowlImage'];
  echo "<br />";
  $img = $row['txtProductBowlImage'];
  echo '...............$img: ' . $img;
  echo "<br />";
  echo "<img src=" . $img . ">";
  echo "<img src='C://BowlPhotos//Thumbs//Ash07-013_btmb.jpg'>";
  echo "<img src='Ash07-013_btmb.jpg'>";
  echo "<br />";
  echo "==================";
  echo "<br />";
  }

mysql_close($con);
?> 

请注意,我尝试 3 次显示图像: 1:使用 db 中的 url 并将其放入 echo 语句中,此 url 在数据中使用“\”分隔符。2:在 echo 语句中嵌入实际文本路径和文件名的示例,此 url 在 url 中使用“/”分隔符。3:在回显语句中仅嵌入文件名,不嵌入路径

当我运行它时,我得到以下输出:

在此处输入图像描述

Echo #1 & #2 生成图标,echo #3 显示与 php.ini 位于同一文件夹中的图像的本地副本。

由此看来,它是未使用的路径,无论是使用“\”还是“/”分隔符。

我认为 '\' 可能被视为一种转义,但为什么带有 '/' 的 url 不起作用?

4

3 回答 3

1

以下所有内容都是错误的,因为“由于安全限制,在所有现代浏览器中都禁用了与本地资源的链接”

要链接到本地​​图像,请使用格式

<img src='file:///C:/path/to/image/pic.jpg'>

您可以使用正斜杠替换反斜杠

$img = str_replace('\\', '/', $row['txtProductBowlImage']);

现在您可以file:///像这样在路径周围添加和单引号

echo "<img src='file:///" . $img . "'>";

使用双引号,您可以跳过点运算符来附加字符串并使用

echo "<img src='file:///$img'>";

美元$img将被视为变量

于 2012-11-05T01:36:03.877 回答
0

它使您尝试从本地计算机获取文件。所以你必须运行一个处理 php 的网络服务器

您可能正在尝试读取服务器无法访问的图像。

尝试将文件与您的 html 或 php 文件一起放置

于 2012-11-05T03:33:39.673 回答
0

好的,在 JonOsterman 非常感谢的帮助下,最终的工作代码是:

    <?php
$con = mysql_connect("localhost","root","Madge1938");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("scwdb", $con);

$result = mysql_query("SELECT * FROM tblsplintersbowlinventory WHERE txtVenue = 'Shoreline'");

while($row = mysql_fetch_array($result))
{
echo $row;
echo "<span>" . $row['intProductID'] . " " . $row['txtProductBowlCode'] . " " . $row['txtProductBowlImage'] . "</span>";
echo "<br />";
$img = $row['txtProductBowlImage'];
echo "<span> Original img: " . $img . " </span>";
$img = str_replace('\\', '/', $img);
echo "<br />";
$img = str_replace('C:/BowlPhotos/Thumbs/', 'Thumbs/', $img);
echo "<span>Folder img: " . $img . " </span>";
echo '<img src="' . $img . '">';
echo "<br />";
$img = str_replace('Thumbs/', '', $img);
echo "<span>Local img: " . $img . " </span>";
echo '<img src="' . $img . '">';
echo "<br />";
echo "<span>done</span><br />";
}

mysql_close($con);
?

有许多变化,但最大的惊喜是 php 无法打开不在同一文件夹或 php 文件子文件夹中的文件夹!当我将整个文件夹移动到 php 文件夹的子文件夹时,上面的代码就会运行!

此外,如上所示,HTML 不需要本地文件的“file:///”...

我应该提一下,这仅在我的本地服务器上运行 - 而不是在网络上。它仅供我自己使用,用于跟踪我制作和销售的木碗。

再次,非常感谢乔恩......

于 2012-11-05T06:47:28.107 回答