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

时间:2011-05-11 23:29:34

标签: php image hyperlink root thickbox

这是我的情况:图像存储在根文件夹之外。我可以使用外部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,但它显示了原始代码

4 个答案:

答案 0 :(得分:2)

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

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

即,读取隐藏文件夹并返回图像的php页面。

答案 1 :(得分:2)

尝试:

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

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

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

答案 2 :(得分:1)

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

  • 使用一些自定义URL重写并使您的脚本工作,例如。使用my_image_processing/img.jpg之类的网址代替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链接作为形象。只需查看the documentation中的photo选项(当设置为photo=true时,其行为应符合您的预期)。

答案 3 :(得分:0)

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

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