[PHP]  Descargar imagenes al servidor desde URL
Verán ando viendo la manera de descargar una imagen a partir del ingreso de la URL por medio de un formulario, pero ya me quede un poco trabado, esto...

Verán ando viendo la manera de descargar una imagen a partir del ingreso de la URL por medio de un formulario, pero ya me quede un poco trabado, esto lo quiero hacer para un foro que ando desarrollando, pero mas allá de conocer del sistema MyBB esto requiere conocimientos mas de PHP por eso lo colocó esta sección.

Pues por ahi tengo algún error pero no he logrado encontrarlo, de hecho es una función de un plugin que yo mismo ando desarrollando, les deo la función en la cual tengo el error

Código PHP:
function portalimg_upload($input_portalimg$img_error == FALSE) {
    require_once 
MYBB_ROOT."inc/functions_upload.php";
    
$input_portalimg preg_replace("#script:#i"""$input_portalimg);
    
$ext get_extension($input_portalimg);        
    if(
preg_match("#^(gif|jpg|jpeg|jpe|bmp|png)$#i"$ext)) {
        
$path $mybb->settings['uploadspath']."/posts";
        
$filename "img_post_".md5(random_str(8)).".".$ext;
        
$file upload_file(fetch_remote_file(basename($input_portalimg)), $path$filename);
        if(
$file['error']) {
            @
unlink($path."/".$filename);    
            
$img_error == TRUE;    
        }    
        if(!
file_exists($path."/".$filename)) {
            @
unlink($path."/".$filename);
            
$img_error == TRUE;
        }
    }
    else {
        
$img_error == TRUE;
    }
    
$portal_array = array(
        
"error"     => $img_error,
        
"src"        => $filename,
    );
    return 
$portal_array;

Última modificación: 12 Jan, 2013, 9:57 pm por cuperd1934.
No haz tratado hacer con la función file_get_contents?
Es decir leer el contenido de la imagen, asignarle el tipo de archivo, en este caso .jpg, .png, .gif, etc..
Y luego crear un nuevo archivo(imagen) con la ruta que le pongas..

Es lo que se me ocurre o como lo haría yo, aunque no he probado nada.
Ya lo probé así como me dices y ya me funciona el problema que ahora tengo es que la imagen la guarda en la raíz del foro y no me deja moverla a una carpeta diferente

Enviado desde mi GT-S5360L
Ni asignándole la ruta? La verdad es raro, ya que estas creando un nueva imagen a partir de la que lees desde la URL.
Al rato subo el código PHP, ando en el móvil

Enviado desde mi GT-S5360L
Este es el nuevo código, como les comentaba ya podía hacer la descarga del archivo pero no puedo hacer que el archivo se guarde en la carpeta que yo le especifico

Código PHP:
define("FILE_PUT_CONTENTS_ATOMIC_TEMP"$mybb->settings['uploadspath']."/posts");
define("FILE_PUT_CONTENTS_ATOMIC_MODE"0777);

function 
portalimg_upload($input_img$img_error FALSE) {
    
$input_img preg_replace("#script:#i"""$input_img);
    
$ext get_extension($input_img);    
    
$input_img file_get_contents($input_img);    
    if(
preg_match("#^(gif|jpg|jpeg|jpe|bmp|png)$#i"$ext)) {
        
$filename random_str(10)."_image.".$ext;
        
$temp md5(time().rand()); 
        
$f = @fopen($temp'wb');
        if (!(
$f = @fopen($temp'wb'))) { 
            
$img_error TRUE;  
        } 
        
fwrite($f$input_img); 
        
fclose($f); 
        if (!@
rename($temp$filename)) { 
            @
unlink($filename); 
            @
rename($temp$filename); 
            @
chmod($filenameFILE_PUT_CONTENTS_ATOMIC_MODE);
            if(
copy(MYBB_ROOT.$filenameFILE_PUT_CONTENTS_ATOMIC_TEMP."/".$filename)) {
                @
unlink(MYBB_ROOT.$filename);
            }
        }  
    }
    else {
        
$img_error == TRUE;
    }
    
$portal_array = array(
        
"error" => $img_error,
        
"src"        => $filename,
    );
    return 
$portal_array;

Y agregando la ruta completa? Es decir algo así:

if(copy(MYBB_ROOT.$filename, MYBB_ROOT.FILE_PUT_CONTENTS_ATOMIC_TEMP."/".$filename))
Ya lo he probado y tampoco funciona amigo Sad
Después de tanto analizar y investigar al fin lo he logrado, asi que ya pueden cerrar este hilo, gracias Steeep por darme la idea para resolver mi problema, te va +1 Big Grin