【问题标题】:unable to show image from external hd php无法从外部高清 php 显示图像
【发布时间】:2014-07-27 00:38:46
【问题描述】:

我是编程新手,现在正在学习 php。我已经安装了 xamp 并编写了一些代码。我的外部高清上有一些图像,我想展示一些图片。 问题是我可以使用以下代码获取图像路径列表:

   echo "<html><body>";
   $outerDir = "x:\map\maps\more\\";
   $total = count (array_diff (scandir ($outerDir), Array (".", "..")));
   $dirs = array_diff( scandir( $outerDir ), Array( ".", ".." ) ); 
   foreach ($dirs as $d) {
       if (!is_dir($outerDir . $d)) {
           echo $d . "<br>";
       }
   }

但如果我想将其显示为图像,则无法显示图像。我在 foreach 中试过这个:

if (!is_dir($outerDir . $d)) {
    $file = $outerhDir . $d;
    echo 'img src="' . $outerDir . $d . '> <br>';
    echo "<img src='" . $outerDir . '\\' . $d . "'alt='" . $d . "'> <br>";
}

但它们都不起作用。我还尝试了这样的 header 和 file_get_content:

if (!is_dir($outerDir . $d)) {
    $file = $outerDir . $d;
    header('Content-type: image/jpeg');
    header('Content-Length:' . filesize($file));
    $image = file_get_contents('$file');
    echo $image . "<br>";
}

即使是简单的 html 代码也行不通!像这样:

echo '<img src="x:\map\maps\more\needwonder.jpg"> <br>';

对接!!当我将其中一张图像存储在与我的 php 文件相同的文件夹中时,它将起作用!像这样:

echo '<img src="needwonder.jpg"> <br>';

但出于安全、技术和舒适的原因,我不想将所有文件与 php 文件放在同一个文件夹中,并且我想学习编程而不是避免代码出现问题或问题。

所以我希望我很好地定义了我的问题,并希望你们中的一个人和/或女孩知道解决方案来帮助我

【问题讨论】:

    标签: php arrays image file-get-contents hard-drive


    【解决方案1】:

    如果您的图像文件不在设置为可供网络服务器访问的文件夹中,则您无法在网页上显示它们。就那么简单。将它们放在网络目录中以使用它们。

    可以编写一个代理图像文件的 PHP 脚本(有点像你正在尝试使用 file_get_contents()),但这样做需要一个单独的图像 PHP 文件,除非绝对必要,否则最好避免,因为它很容易引入安全漏洞,并且性能很差。但是,如果您确实想这样做:

    • 链接到 PHP 脚本来代替图像,并将图像的标识符作为参数传递给它(例如,&lt;img src="img.php?image=blah"&gt;)。
    • 在该脚本中,使用该标识符发送适当的 Content-Type,然后使用 readfile() 输出图像。 (相当于echo file_get_contents(...),但更简洁,在某些情况下表现更好。)
    • 绝对确定不能操纵该脚本的参数来加载您不打算提供的文件。这包括像?image=../../wrong/file 这样的诡计。

    【讨论】:

    • 感谢您的回答,那么使用其他语言而不是 php 更好吗?如果是,哪个更好? Java、C#、C++?当我掌握了PHP的基础知识后,我也想学习其他语言
    • 这不是特定于语言的问题。切换到另一种语言并不能解决问题。
    猜你喜欢
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多