您好我想从URL中下载大约250个文件。我快完成了!问题是我的URL的结构是: http://lee.kias.re.kr/~newton/sann/out/201409/ / SEQUENCE1.prsa
其中id在序列中,但文件名为" SEQUENCE1.psra"有格式" SEQUENCE?.psra"。 有什么办法可以在我的代码中指定这种格式的文件吗?此外,文件夹中还有其他文件,但只有1个用" .psra"分机
Code:
<?php
// Source URL pattern
//$sourceURLOriginal = "http://www.somewebsite.com/document{x}.pdf";
$sourceURLOriginal = " http://lee.kias.re.kr/~newton/sann/out/201409/{x}/**SEQUENCE?.prsa**";
// Destination folder
$destinationFolder = "C:\\Users\\hp\\Downloads\\SOP\\ppi\\RSAdata";
// Destination file name pattern
$destinationFileNameOriginal = "doc{x}.txt";
// Start number
$start = 7043;
// End number
$end = 7045;
$n=1;
// From start to end
for ($i=$start; $i<=$end; $i++) {
// Replace source URL parameter with number
$sourceURL = str_replace("{x}", $i, $sourceURLOriginal);
// Destination file name
$destinationFile = $destinationFolder . "\\" .
str_replace("{x}", $i, $destinationFileNameOriginal);
// Read from URL, write to file
file_put_contents($destinationFile,
file_get_contents($sourceURL)
);
// Output progress
echo "File #$i complete\n";
}
?>
如果我直接指定URL,它的工作原理!
错误: 警告:file_get_contents(http://lee.kias.re.kr/~newton/sann/out/201409/7043/SEQUENCE?.prsa):无法打开流:第37行的C:\ xampp \ htdocs \ SOP \ download.php中的参数无效 文件#7043完成
它制作文件但它们是空的!
如果有一种方法我可以下载整个文件夹(按顺序用id命名)也可以工作!但是我们如何在文件夹中下载整个文件夹?
答案 0 :(得分:1)
有可能file_get_contents()函数无法在您的服务器上运行。 试试这段代码:
function url_get_contents ($Url) {
if (!function_exists('curl_init')){
die('CURL is not installed!');
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $Url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($ch);
curl_close($ch);
return $output;
}
答案 1 :(得分:1)
你走了。
我没有测试整个file_get_contents
,file_put_contents
部分,但是如果你说它添加了文件(虽然是空白的),那么我认为它仍然在这里工作......
其他一切都很好。我留下了var_dump()
,所以你可以看到返回的样子。
我做了我在评论中建议的内容。打开文件夹,解析文件列表,获取所需的文件名
此外,我不知道你是否阅读了我原来的评论,但是$sourceURLOriginal
在开头有一个额外的空间,这可能会给你一个问题。
<?php
$start=7043;
$end=7045;
$sourceURLOriginal="http://lee.kias.re.kr/~newton/sann/out/201409/";
$destinationFolder='C:\Users\hp\Downloads\SOP\ppi\RSAdata';
for ($i=$start; $i<=$end; $i++) {
$contents=file_get_contents($sourceURLOriginal.$i);
preg_match_All("|href=[\"'](.*?)[\"']|",$contents,$hrefs);
$file_list=array();
if (empty($hrefs[1])) continue;
unset($hrefs[1][0],$hrefs[1][1],$hrefs[1][2],$hrefs[1][3],$hrefs[1][4]);
$file_list=array_values($hrefs[1]);
var_dump($file_list);
foreach ($file_list as $index=>$file) {
if (strpos($file,'prsa')!==false) {
$needed_file=$index;
break;
}
}
file_put_contents($destinationFolder.'\doc'.$i.'.txt',
file_get_contents($sourceURLOriginal.$i.'/'.$file_list[$needed_file])
);
}