验证请求后,使用PHP CURL收集文件下载空文件

时间:2015-06-12 16:49:08

标签: php curl

我正在建立一个系统,其中一个网站转到另一个网站以获取文档。 在第一个网站上,我使用Curl发出请求以获取所需文件: 我正在使用Download file from URL using CURL的解决方案:

function collect_file($url){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_VERBOSE, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_AUTOREFERER, false);
        curl_setopt($ch, CURLOPT_REFERER, "http://example.com");
        curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        $result = curl_exec($ch);
        curl_close($ch);
        echo $result;
        return($result);
    }

    function write_to_file($text,$new_filename){
        $fp = fopen($new_filename, 'w');
        fwrite($fp, $text);
        fclose($fp);
    }

    $curlUrl = 'http://site2.com/file-depository/14R4NP8JkoIHwIyjnexSUmyJibdpHs5ZpFs3NLFCxcs54kNhHj';

            $new_file_name = "testfile-new.png";
            $temp_file_contents = collect_file($curlUrl);
            write_to_file($temp_file_contents,$new_file_name);

我正在测试下载图片。如果我使用直接网址到$ curlUrl,例如http://site2.com/file-depository/image.png,那就完美了。

我正在做的是然后根据数据库解析和检查URL http://site2.com/file-depository/14R4NP8JkoIHwIyjnexSUmyJibdpHs5ZpFs3NLFCxcs54kNhHj以匹配所请求的文档,一旦有匹配的文档,我需要将此文档提供给Curl响应。 我已经尝试了很多方法来读取文件,但每次我在另一端获得一个文件,但它只有1kb的大小(预期45个),当试图打开它时,我得到一个错误未知的文件类型等。

在第二个网站上,一旦验证了URL,我就拥有了:

$file = readfile('some-image.png');
echo $file;

我猜测有部分信息属于文件丢失,但无法弄清楚,任何指针都会受到赞赏!

1 个答案:

答案 0 :(得分:0)

我已经取代了

function write_to_file($text,$new_filename){
    $fp = fopen($new_filename, 'w');
    fwrite($fp, $text);
    fclose($fp);
}

by file_put_contents($ new_file_name,trim($ temp_file_contents)); 请注意trim(),问题是我显然是在文件内容前面收集了一些空白区域。