plaatjes opslaan met php?
Ik heb de source's van de images en daar zet ik tot nu toe de <img> tags omheen en set de source zodat er plaatjes te zien zijn.
Nu heb ik die plaatjes niet lokaal staan (want ik gebruik de source van een andere website).
Nu wil ik graag de plaatjes in een folder opslaan.
Hoe kan ik dit het beste doen met php zodat ik niet elke keer rechtsklik enzo moet doen en dan save as.(want daar hebben de meeste mensen geen zin in).
Bedankt!
Dennis de Vries schreef op 07.12.2009 16:20:
Waarom wil je de plaatjes opslaan? Waarom willen de gebruikers de plaatjes opslaan?
Inplaats van dat ie steeds stuk per stuk gaat ophalen van die plaatjes leek het mij makkelijker om die plaatjes gewoon op te slaan (in een folder) zodat ie dan niet steeds dat script hoeft te laden om die plaatjes op te halen.
Gewijzigd op 01/01/1970 01:00:00 door bart niethenk
Zoek eens op google 'save images php curl/fopen', ik krijg direct resultaat.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$url = 'http://website.nl/images/afbeelding.jpeg';
$file = 'bestandsnaam.jpeg';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
$raw = curl_exec($ch);
$fh = fopen($file, 'w');
fwrite($fh, $raw);
fclose($fh);
curl_close($ch);
?>
$url = 'http://website.nl/images/afbeelding.jpeg';
$file = 'bestandsnaam.jpeg';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
$raw = curl_exec($ch);
$fh = fopen($file, 'w');
fwrite($fh, $raw);
fclose($fh);
curl_close($ch);
?>
Edit:
Uiteraard moet de extensie cURL wel aanstaan op je server. Let er ook op dat de folder waarin je de afbeeldingen opslaat writable is door Apache (meestal wwwuser). Eventueel kan je bij het openen van het bestand (fopen) nog expliciet de directory opgeven, zodat je niet hoeft te zoeken naar waar je plaatjes gebleven zijn (of je verandert de working directory met chdir()). ;)
Gewijzigd op 01/01/1970 01:00:00 door Winston Smith
Kasper schreef op 07.12.2009 16:54:
Voorbeeldstukje (niet getest). Kan je wel verder uitwerken, zodat ook bestandsnamen gekopieerd worden.
Edit:
Uiteraard moet de extensie cURL wel aanstaan op je server. Let er ook op dat de folder waarin je de afbeeldingen opslaat writable is door Apache (meestal wwwuser). Eventueel kan je bij het openen van het bestand (fopen) nog expliciet de directory opgeven, zodat je niet hoeft te zoeken naar waar je plaatjes gebleven zijn (of je verandert de working directory met chdir()). ;)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$url = 'http://website.nl/images/afbeelding.jpeg';
$file = 'bestandsnaam.jpeg';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
$raw = curl_exec($ch);
$fh = fopen($file, 'w');
fwrite($fh, $raw);
fclose($fh);
curl_close($ch);
?>
$url = 'http://website.nl/images/afbeelding.jpeg';
$file = 'bestandsnaam.jpeg';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
$raw = curl_exec($ch);
$fh = fopen($file, 'w');
fwrite($fh, $raw);
fclose($fh);
curl_close($ch);
?>
Edit:
Uiteraard moet de extensie cURL wel aanstaan op je server. Let er ook op dat de folder waarin je de afbeeldingen opslaat writable is door Apache (meestal wwwuser). Eventueel kan je bij het openen van het bestand (fopen) nog expliciet de directory opgeven, zodat je niet hoeft te zoeken naar waar je plaatjes gebleven zijn (of je verandert de working directory met chdir()). ;)
Dit werkte erg goed!
heel erg bedankt iedereen.
Zou dit eventueel niet gemakkelijker zijn?
Curl is iets van 3x sneller dan file_get_contents();
Daarnaast werkt file_get_contents niet altijd (afhankelijk van de instellingen in .htaccess op de server), terwijl cURL het wel altijd doet. :)
cUrl kan ook zijn uitgezet, dit werkt ook niet altijd dus.