¿Es posible copiar imágenes de web a su disco duro?
-
11-10-2019 - |
Pregunta
Estoy intentando crear una página para su uso personal solo. Lo que quiero hacer es, crear un sistema a través del cual puedo descargar las imágenes en el disco duro local, directamente, proporcionando el enlace a través de un localhost como WAMP. La razón por la que estoy tratando de hacer es, quiero que las imágenes se clasifican automáticamente en mi disco duro. Mi campo de formulario será algo como esto
<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>
Ahora, en el 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....
Me refiero a mi enfoque es erróneo. ¿Cómo puedo lograr algo como esto?
Error
Warning: copy(images/image.jpg) [function.copy]: failed to open stream: No such file or directory in
Solución 2
Ok, he usado rizo en lugar de lograr lo que estoy esperando. Aquí está la pieza de código
$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);
Otros consejos
Si allow_url_fopen
es cierto en el php.ini y su PHPVERSION
es> = 4.3.0 su código debería funcionar.
Puede descargar por primera vez a partir del documento script PHP desde la URL especificada, a continuación, dar http-cliente enlace para descargar el archivo almacenado localmente. o el contenido del documento sometido a flujo de salida:
$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);