0

我现在正在努力捕捉图像......听起来很傻,但看看这个链接:P

http://manga.justcarl.co.uk/A/Oishii_Kankei/31/1

如果您获得图像 URL,则会加载图像。回去,它看起来工作正常,但这只是浏览器加载缓存的图像。

该应用程序之前运行良好,我认为他们对他们的图像实施了某种Referer检查。所以我找到了一些代码并想出了以下内容......

$ref = 'http://www.thesite.com/'; 
$file = 'theimage.jpg';
$hdrs = array( 'http' => array(
 'method' => "GET",
 'header'=> "accept-language: en\r\n" . 
  "Accept:application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*\/*;q=0.5\r\n" .
  "Referer: $ref\r\n" . // Setting the http-referer
  "Content-Type: image/jpeg\r\n" 
 )
);
// get the requested page from the server
// with our header as a request-header
$context = stream_context_create($hdrs);

$fp = fopen($imgChapterPath.$file, 'rb', false, $context);
fpassthru($fp);
fclose($fp);

从本质上讲,它构成了一个虚假的推荐人。我得到的只是一堆乱码(感谢 fpassthru),所以我认为它正在获取图像,但我不敢说我​​不知道​​如何输出/显示收集的图像。

4

1 回答 1

0

在调用 fpassthru 之前尝试调用它:

header('Content-Type: image/jpeg');

这将告诉您的浏览器接下来的数据是 JPEG 图像。否则 PHP 会自动说它是 HTML 文档,这显然是错误的。

注意:请记住,header必须在将其他任何内容输出到浏览器之前进行所有调用,这意味着在调用之前不能有任何echoprint调用,并且在开始标记header之前根本不能有任何东西。<?php

于 2010-06-10T16:49:01.567 回答