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:データベースのURLを使用し、それをechoステートメントに入れると、このURLはデータの「\」区切り文字を使用します。2:実際のテキストパスとファイル名のサンプルをechoステートメントに埋め込むこのURLは、URLに「/」区切り文字を使用します。3:echoステートメントにファイル名のみを埋め込み、パスは埋め込みません

これを実行すると、次の出力が得られます。

ここに画像の説明を入力してください

エコー#1と#2はアイコンを生成し、エコー#3はphpと同じフォルダーにある画像のローカルコピーを表示します。

このことから、「\」または「/」セパレーターのいずれかで使用されていないのはパスであるように見えます。

'\'はエスケープと見なされる可能性があると思いますが、'/'の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をハドルするWebサーバーを実行する必要があります

サーバーにアクセスできない画像を読み込もうとしている可能性があります。

htmlまたはphpファイルでファイルを配置してみてください

于 2012-11-05T03:33:39.673 に答える
0

OK、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:///」を必要としません...

また、これはローカルサーバーでのみ実行することを目的としており、Webでは実行することを目的としていません。私が作って売っている木製のボウルを追跡するのは私自身の使用のためだけです。

繰り返しになりますが、Jonに感謝します...

于 2012-11-05T06:47:28.107 に答える