Сохраняйте внешние файлы по php - PullRequest
0 голосов
/ 29 марта 2011

У меня есть массив с URL, как:

[1] = http://site.com/1.pdf
[2] = http://site.com/234234234.png
[3] = http://site.com/archive.zip
[4] = http://site.com/1f41f.anyformat
[5] = http://site.com/file.txt

Как мне сохранить их в какой-нибудь папке на моем ftp через PHP?

Имена файлов не должны меняться.

Ответы [ 3 ]

2 голосов
/ 29 марта 2011

Вот простой пример:

$urls = array('url1', 'url2');
foreach($urls as $url) {
   $data = file_get_contents($url);
   file_put_contents('/path/to/folder/'.basename($url), $data);
}
1 голос
/ 29 марта 2011

Может быть, это поможет вам решить вопрос

function remote_merge($sourceurl,$targetftp){
    $ch = curl_init ($sourceurl);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
    $rawdata=curl_exec($ch);
    curl_close ($ch);
    $tempfile = "/path/to/temp/".basename(parse_url($sourceurl, PHP_URL_PATH));
    if(file_exists($tempfile)){
        unlink($tempfile);
    }
    $fp = fopen($tempfile,'x');
    fwrite($fp, $rawdata);
    fclose($fp);

    $ch = curl_init();  
    $fp = fopen($tempfile, "rb");

    curl_setopt($ch, CURLOPT_URL, $targetftp);
    curl_setopt($ch, CURLOPT_UPLOAD, 1);
    curl_setopt($ch, CURLOPT_INFILE, $fp);
    curl_setopt($ch, CURLOPT_INFILESIZE, filesize($tempfile));
    $error = curl_exec($ch);
    // check $error here to see if it did fine or not!
    curl_close($ch); 
}

Используйте это, чтобы опробовать функцию remote_merge

$sourceurls = array(
    "http://site.com/1.pdf",
    "http://site.com/234234234.png",
    "http://site.com/archive.zip",
    "http://site.com/1f41f.anyformat",
    "http://site.com/file.txt"
);

foreach($sourceurl as $sourceurls){
    $filename = basename(parse_url($sourceurl, PHP_URL_PATH);
    $targetftp = "ftp://${ftpuser}:${ftppasswd}@${ftpserver}${ftppath}/$filename";
    remote_merge($sourceurl,$targetftp)
}
0 голосов
/ 29 марта 2011

193 вопроса, 3 ответа ... вау.

function curl($url){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_close ($ch);
    return curl_exec($ch);
}

$files = array();
$dir = "dir/";

foreach($files as $file){
    $name = explode("/", $file);
    $name = end($name);
    $contents = curl($file);
    file_put_contents($dir.$name, $contents);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...