繁体   English   中英

PHP链接到根文件夹外的图像[a href,而不是img src]

[英]PHP Link to image outside root folder [a href, not img src]

这是我的情况:图像存储在根文件夹之外。 我可以使用外部php文件(应该是)访问它们,然后使用file_get_contents然后echo img src然后它将完美显示。

我安装了厚箱,我想要发生的是当用户点击图像时,它会在厚箱中放大显示

<a href="img.jpg" class="thickbox"><img src="my_image_processing.php?img=img.jpg" />

我正在尝试点击时创建一个画廊。 会发生什么是厚箱出现但图像没有。 而不是图像,乱码/垃圾代码显示黑色钻石带有问号。 我想这是图像的原始代码。

如何将其输出为图像而不是原始代码

<a href> 's

补充:我刚刚玩了一下。 当我删除thickbox类时, a href实际上是有效的。 它会在下一页正常显示图像。 不幸的是,当我附加thickbox类时,它显示了thickbox,但它显示了原始代码

在您的示例中,您直接使用jpg文件,它应该是这样的:

<a href="my_image_processing.php?img=img.jpg" class="thickbox"><img src="my_image_processing.php?img=img.jpg" />

也就是说,读取隐藏文件夹并返回图像的php页面。

尝试:

header ("Content-type: image/jpeg");

如果您将原始图像数据视为文本,则可能是您的浏览器无法将输出识别为图像。 您可以使用上面的标题行发出正确的mime类型信号。

也可能发生错误并且错误消息使图像文件不可读(因为流而不是标头以错误消息开始)。 在这种情况下,您应该在字符前看到错误消息。

Thickbox识别由文件扩展名链接的资源的类型,以确定它是否是要显示的图像。 它在确定扩展时也会忽略查询字符串。 因此,您有以下选择:

  • 使用一些自定义URL重写并使您的脚本工作,例如。 使用像my_image_processing/img.jpg这样的URL代替my_image_processing.php?img=img.jpg (搜索“mod_rewrite”的更多信息),
  • 重写ThickBox的代码(或搜索选项参数,允许您更改该识别机制而不更改代码 - 我没有找到任何代码),或者
  • 实现其他库,允许您实现所需的(并允许您以您想要的方式使用外部脚本),

有一件事是让Thickbox认为它加载图像,而不是页面加载到框架中,第二个是 - 正如vbence指出的那样 - 在你用脚本返回的图像中添加适当的mime类型:你应该添加适当的标题“Content-Type “信息。

编辑:

负责显示图像的代码如下所示[原文如此!]:

var baseURL;
 if(url.indexOf("?")!==-1){ //ff there is a query string involved
  baseURL = url.substr(0, url.indexOf("?"));
 }else{ 
     baseURL = url;
 }

 var urlString = /\.jpg$|\.jpeg$|\.png$|\.gif$|\.bmp$/;
 var urlType = baseURL.toLowerCase().match(urlString);
if(urlType == '.jpg' || urlType == '.jpeg' || urlType == '.png' || urlType == '.gif' || urlType == '.bmp'){//code to show images

您可能希望添加另一种类型('php'),如果您选择自己修改脚本,但您应该了解其后果。

EDIT2:

如果你使用'更改插件'选项,有一些替代( ColorBox ),使你能够决定而不需要深入研究代码,是否应将* .php链接视为图像。 只需在文档中查找photo选项(当设置photo=true应该按照您的预期运行)。

您可能忽略了用于显示图像的http标头。

header("Content-type: image/jpeg");
header("Content-Disposition: attachment;"); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM