Est-il possible de copier des images de web sur votre disque dur?
-
11-10-2019 - |
Question
Je suis en train de créer une page pour une utilisation personnelle juste. Ce que je veux faire est, de créer un système à travers lequel je peux télécharger des images sur mon disque dur local, directement en fournissant le lien par une localhost comme WAMP. La raison pour laquelle je suis en train de faire est, je veux que les images à trier automatiquement sur mon disque dur. Mon champ de formulaire sera quelque chose comme ceci
<form method="POST" action="process.php">
<input type="text" name="URL" id="URL" />
<input type="text" name="category" id="category" />
<input type="text" name="subcategory" id="category" />
<input type="submit">
</form>
Maintenant, dans le process.php
//This is just a sample... So please ignore the roughness of the coding
copy($_POST['url'],$_POST['category']."/".$_POST['subcategory']."/somename.jpg");
// If you noticed, the categories and subcategories are actually the name of directory, where I want the picture to go be saved....
Je pense mon approche est erronée. Comment puis-je faire quelque chose comme ça?
Erreur
Warning: copy(images/image.jpg) [function.copy]: failed to open stream: No such file or directory in
La solution 2
Ok, j'ai utilisé à la place boucle pour obtenir ce que je me attends. Voici le morceau de code
$img = $_POST['url'];
$fullpath = $_POST['category']."/".$_POST['subcategory']."/".basename($img);
$ch = curl_init ($img);
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);
$fp = fopen($fullpath,'x');
fwrite($fp, $rawdata);
Autres conseils
Si allow_url_fopen
est vrai dans le php.ini et votre PHPVERSION
est> = 4.3.0 votre code devrait fonctionner.
vous pouvez d'abord télécharger à partir du document de script php depuis l'URL spécifiée, donner lien http-client pour télécharger le fichier stocké localement. ou le contenu du document mis à flux de sortie:
$cont = file_get_contents($_GET['url']);
header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: binary ");
header('Accept-Ranges: bytes');
header('Content-disposition: attachment; filename=' . $new_file_name));
echo($cont);