如何从网址

时间:2016-10-05 07:39:10

标签: php

我有这个网址

'http://2.bp.blogspot.com/-LBbpkomI7JQ/VnLmeFZANgI/AAAAAAAAWhc/MsdZjtxN0HQ/s0-Ic42/RCO001.jpg '

我尝试做一些搜索并做了这个

$file = fopen("C:\Users\Alex\Desktop\script.txt", "r");
$links = array();

while (!feof($file)) {
$links[] = fgets($file);
}

fclose($file);

foreach($links as $num => $link)
{
echo "'".$link."'";
save_image("'".$link."'","'".$num."'".".jpg");

}

var_dump($links);
function save_image($inPath,$outPath)
{ //Download images from remote server
$in=    fopen($inPath, "rb");
$out=   fopen($outPath, "wb");
while ($chunk = fread($in,8192))
{
    fwrite($out, $chunk, 8192);
}
fclose($in);
fclose($out);
}

所有网址都在我的script.txt文件中,所以我将它们存储在一个数组中,然后逐个调用每个网址,但是它说

 failed to open stream: Invalid argument 

有什么遗漏或错误吗?

2 个答案:

答案 0 :(得分:1)

在这一行:

$file = fopen("C:\Users\Alex\Desktop\script.txt", "r");

您的反斜杠可能会被PHP转换为特殊字符,这可能会导致问题,所以 看看这个主题: failed to open stream: Invalid argument

第二件事: 这可能是fopen configuration

的问题

编辑你的php.ini并设置:

allow_url_fopen = On

你可以检查这个值(它可能是假的):

var_dump(ini_get('allow_url_fopen'));

您需要与您的网络托管服务商联系,或尝试其他方法。 Mabye CURL已启用?

您还应该检查display_errorserror_reporting值。 PHP应该大声抱怨无法打开URL。

答案 1 :(得分:1)

你可以试试这个实现(对我很有用):

<?php

$links = explode("\n", file_get_contents("C:\Users\Alex\Desktop\script.txt"));

foreach($links as $num => $link)
{
    echo $link . "\n";
    save_image($link, $num.".jpg");
}

function save_image($inPath, $outPath)
{
    $inPath = trim($inPath);
    if ($inPath != "") {
        file_put_contents($outPath, file_get_contents($inPath));
    }
}

假设您的script.txt看起来像这样

http://2.bp.blogspot.com/-LBbpkomI7JQ/VnLmeFZANgI/AAAAAAAAWhc/MsdZjtxN0HQ/s0-Ic42/RCO001.jpg