Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

GeehR00x

[Resolvido] Copiar Imagem PHP.!

Recommended Posts

Estou desenvolvendo uma ferramenta , que nessecita do copia de imagens da net direto pra meu servidor.

exemplo: www.seusite.com/imgem.jpg para meu servidor.

ja fiz uma pesquisa , achei muitos , porem muitos falharão , e estou tentando evitar cURL pq não sei kk.

Obg.

Compartilhar este post


Link para o post
Compartilhar em outros sites

se você tiver o HTTP stream wrapper habilitado faça assim

copy('http://dominio.com/foto.jpeg', '/tmp/foto.jpeg');

se nao tente assim

<?php
//Get the file
$content = file_get_contents("http://example.com/image.jpg");

//Store in the filesystem.
$fp = fopen("/location/to/save/image.jpg", "w");
fwrite($fp, $content);
fclose($fp);
?>

 

ou assim

 

$remoteimage = "http://domain.com/path/to/remote/image.jpg";
$localimage = "/home/domain/httpdocs/path/to/my/image.jpg";

if ($content = file_get_contents($remoteimage)) {
if (!empty($content)) {
   	$fp = fopen($localimage, "w");
   	fwrite($fp, $content);
   	fclose($fp);
}
}

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cuidado com a desinformação, Ricardo.

 

Todas as três implementações requerem obrigatoriamente que o HTTP Stream Wrapper esteja disponível, caso contrário, o PHP não entenderá o que http:// significa.

 

@GeehR00x, para saber se sua instalação possui essa habilidade, execute um phpinfo() e procure por allow_url_fopen, sob a seção Core.

 

O valor na coluna Local Value deve ser On.

 

[EDIT]

 

Para fazer utilizando a cURL é bem fácil, veja:

 

$filename = 'http://www.google.com/intl/pt-BR_ALL/images/logos/images_logo_lg.gif';

$ch = curl_init( $filename );

curl_setopt( $ch, CURLOPT_RETURNTRANSFER, TRUE );

$image = curl_exec( $ch ) or die( curl_error() );

curl_close( $ch );

// Ajustando a extensão por segurança

$ext = ltrim( strrchr( $filename, '.' ), '.' );

$fp = fopen( sprintf( 'image.%s', $ext ), 'wb' );

fwrite( $fp, $image );

fclose( $fp );

Na primeira parte você usa a cURL para conectar ao recurso externo. Cria uma variável ($image) à qual você atribui aquilo que a cURL retornar.

 

Depois fecha a sessão.

 

O ponto mais importante aqui é o curl_setopt() pois sem a opção RETURNTRANSFER habilitada a variável $image não receberá o valor esperado pois o mesmo será ecoado na tela.

 

A segunda parte é mais simples ainda. Uma vez que você tem a representação textual da imagem, basta você gravar o arquivo.

 

Mas existe outro ponto importante aqui, principal mas não exclusivamente, de ambientes Windows, que é a letra b no modo de abertura de fopen(), haja vista haver pequenas nuances entre binários e não-binários nele.

 

Eu fiz uma pequena modificação para que você não defina acidentalmente a extensão do arquivo errado, por identificar a correta a partir do endereço do arquivo externo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.