Ist es möglich, Bilder von Web auf Ihre Festplatte zu kopieren?
-
11-10-2019 - |
Frage
Ich versuche, eine Seite nur für den persönlichen Gebrauch zu erstellen. Was ich tun möchte, ist, erstellen Sie ein System, durch das ich Bilder auf meinem lokalen Festplatte herunterladen können, direkt über den Link durch eine Bereitstellung von localhost wie WAMP. Der Grund, warum ich zu tun versuchen, ist, möchte ich die Bilder automatisch auf meiner Festplatte sortiert werden. Mein Formularfeld wird so etwas wie dieses
sein<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>
Jetzt, in den 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....
ich meinen Ansatz denke, ist falsch. Wie kann ich so etwas wie dies erreichen?
Fehler
Warning: copy(images/image.jpg) [function.copy]: failed to open stream: No such file or directory in
Lösung 2
Ok, habe ich curl statt zu erreichen, was ich erwarte. Hier ist das Stück 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);
Andere Tipps
Wenn allow_url_fopen
wahr ist in der php.ini und Ihre PHPVERSION
ist> = 4.3.0 Code sollte funktionieren.
Sie können zuerst herunterladen von PHP-Skript Dokument von den angegebenen URL, dann geben http-Client-Verbindung lokal gespeicherte Datei zum Download bereit. oder setzen Dokumentinhalt Ausgangsstrom:
$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);