Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
指向根文件夹外图像的PHP链接[a href,而不是img src]_Php_Image_Hyperlink_Root_Thickbox - Fatal编程技术网

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

指向根文件夹外图像的PHP链接[a href,而不是img src],php,image,hyperlink,root,thickbox,Php,Image,Hyperlink,Root,Thickbox,我的情况是:图像存储在根文件夹之外。我可以通过一个外部php文件(应该是这样)访问它们,然后文件\u获取内容然后echo然后img src它就会完美地显示出来 我已经安装了thickbox,我想做的是当用户点击图像时,它会显示在thickbox中 <a href="img.jpg" class="thickbox"><img src="my_image_processing.php?img=img.jpg" /> 我正试图在单击时创建一个图库。出现的情况是thick

我的情况是:图像存储在根文件夹之外。我可以通过一个外部php文件(应该是这样)访问它们,然后
文件\u获取内容
然后
echo
然后
img src
它就会完美地显示出来

我已经安装了thickbox,我想做的是当用户点击图像时,它会显示在thickbox中

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

我正试图在单击时创建一个图库。出现的情况是thickbox显示,但图像没有显示。而不是图像,乱七八糟/垃圾代码显示为带问号的黑钻石。我想这是图像的原始代码

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

<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类型


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

您可能忽略了显示图像的http头

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

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

  • 使用一些自定义URL重写并使您的脚本正常工作,例如使用URL,如
    my\u image\u processing/img.jpg
    ,而不是
    my\u image\u processing.php?img=img.jpg
    (搜索有关“mod\u rewrite”的更多信息)
  • 重写ThickBox的代码(或搜索选项参数,允许您在不更改代码的情况下更改识别机制-我没有找到任何),或
  • 实现其他库,允许您实现所需内容(并允许您以预期的方式使用外部脚本)
一件事是让Thickbox认为它加载了图像,而不是页面到框架中,第二件事是——正如vbence所指出的那样——向脚本返回的图像添加适当的mime类型:您应该添加带有“内容类型”信息的适当标题

编辑:

负责显示图像的代码如下开始[sic!]:

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:


如果使用“changeplugin”选项,则有一些替代选项(),使您能够在不深入代码的情况下决定*.php链接是否应被视为图像。只需在中查找
photo
选项(当设置
photo=true时,
应按您的预期运行)。

他说,当他使用处理页面时,图像显示良好,这不是问题。我猜OP不希望提示下载文件,而只是显示。是的,对不起,我的是这样写的。我已经为这件事发愁了好几年了days@user657896我更新了我的代码,对php页面的调用应该在两个地方,也在
中。我已经尝试在代码的顶部甚至之后附加该标题。两者都不起作用。问题是Thickbox没有使用MIME类型信息来显示内容(请参阅我的答案)。但无论如何都应该添加内容类型。根据您所说的(直接访问my_image_processing.php?img=img.jpg works),我猜问题出在thickbox(实际的bug或您的错误)。仔细检查您是否遵循了所有规则,包括macFFBgHack.png位。如果您仍然有问题,我建议您编辑/重新标记您的问题,并包括所有与thickbox相关的脚本/链接/样式标记(所有相关的HTML),并告诉我们您使用的是哪个版本的jquery和thickbox。出于某种原因,thickbox似乎没有发送jpeg MIME类型的图像。是的,问题与thickbox有关,但事实上,thickbox将内容识别为页面(假设*.php不是图像),并且没有查看在标题中发送的
内容类型
信息。可能的解决方案在我的答案中。好的,我刚刚尝试将其重写到我的_image_processing/image.jpg。我再也没有垃圾了,但现在它只是显示为空白。同样,当我删除这些类时,它工作正常。我将尝试您的编辑1和2…在编辑thickbox.js本身时,我尝试在urlString中添加| \.php$和/或添加和/或添加urlType='.php',但似乎不起作用;只是一个空白的屏幕。您将如何继续添加该更改?很抱歉,我对javascript不是很精通