Ler arquivo remoto

22 views
Skip to first unread message

Diogo Machado

unread,
Mar 21, 2012, 7:51:40 PM3/21/12
to kohan...@googlegroups.com
Bom pessoal, é o seguinte, eu estou criando um sistema que lê uma imagem de retorno de uma API e salva no banco de dados:

https://apis.live.net/v5.0/e60fd67ad25e5db5/picture    -> Passando essa url eu tenho retorno de uma imagem

Porém a minha dificuldade é ler essa imagem com Kohana e ou Php puro, e explodir o nome do arquivo, para salvar o nome do arquivo e a extensão do arquivo.

Preciso da ajuda de vocês!

Thiago Locks

unread,
Mar 21, 2012, 8:02:16 PM3/21/12
to kohan...@googlegroups.com
Olá Diogo!

Para pegar o mime type, e com ele ter a extensão, você pode fazer assim:
    <?php
    $url = "https://apis.live.net/v5.0/e60fd67ad25e5db5/picture";
    file_put_contents('temp', file_get_contents($url));
    $img = file_get_contents($url);
    $infos = getimagesize('temp');
    echo $infos['mime'];
?>

Já o nome do arquivo do arquivo eu não consegui. Mas ele é realmente importante para você?

Abraços,

--
Thiago Locks
Zira.com.br | PSDparaWordPress.com.br
(51) 3066-5328 / 3065-2293 | Skype olaZira
Av. 1º de Março 1040, salas 31 e 32
Novo Hamburgo - RS / Brasil
--
Você está recebendo esta mensagem porque se inscreveu no grupo "Kohana Php" dos Grupos do Google.
Para ver esta discussão na web, acesse https://groups.google.com/d/msg/kohana-php/-/vswsz9MONucJ.
Para postar neste grupo, envie um e-mail para kohan...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para kohana-php+...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/kohana-php?hl=pt-BR.

Diogo Machado

unread,
Mar 21, 2012, 8:08:38 PM3/21/12
to kohan...@googlegroups.com
Na verdade o mime era mais importante, o nome do arquivo eu vo gerar um hash com sha1 e microtime() e enviar para uma pasta no servidor.

Obrigado pela ajuda!
Para cancelar a inscrição nesse grupo, envie um e-mail para kohana-php+unsubscribe@googlegroups.com.

Vitor

unread,
Mar 21, 2012, 8:16:49 PM3/21/12
to kohan...@googlegroups.com
mas qual está sendo o problema?!

vc provavelmente vai ter que usar curl com openssl;

acho que o file_get_contents funcionaria na questao do ssl, mas se houver redirecionamento por http pode ser um problema

2012/3/21 Diogo Machado <tec...@diogomachado.net>

--
Você está recebendo esta mensagem porque se inscreveu no grupo "Kohana Php" dos Grupos do Google.
Para ver esta discussão na web, acesse https://groups.google.com/d/msg/kohana-php/-/vswsz9MONucJ.
Para postar neste grupo, envie um e-mail para kohan...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para kohana-php+...@googlegroups.com.

Para obter mais opções, visite esse grupo em http://groups.google.com/group/kohana-php?hl=pt-BR.



--
Vitor de Araujo Simões (Dalai/Snag)
Estudante de Ciências da Computação - USP

"Computation is the art of building solutions
- at the cost of creating more problems"


http://www.varaujo.com.br

Diogo Machado

unread,
Mar 22, 2012, 9:00:50 AM3/22/12
to kohan...@googlegroups.com
Cara, eu quero pegar o arquivo de retornor, e achar a extensão dele! O nome eu mesmo vou criar!
Diogo Machado
Desenvolvimento de Aplicações Web
www.diogomachado.com | 028 9922-0849



Anderson Marques Ferraz

unread,
Mar 22, 2012, 9:53:34 AM3/22/12
to kohan...@googlegroups.com
Cara, eu acessei o link e meu navegador baixou a imagem já com a extensão. Acho que você não precisa verificar o mime-type da imagem. Basta você examinar os headers da requisição HTTP, o que eu imagino que dá pra fazer com as funções da extensão php-curl.

Na linha de comando, eu executei:

A saída foi:
* About to connect() to apis.live.net port 443 (#0)
*   Trying 64.4.45.31... connected
* Connected to apis.live.net (64.4.45.31) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* SSL connection using TLS_RSA_WITH_AES_128_CBC_SHA
* Server certificate:
* subject: CN=apis.live.net
* start date: Dez 08 19:19:41 2010 GMT
* expire date: Dez 07 19:19:41 2012 GMT
* common name: apis.live.net
* issuer: CN=Microsoft Secure Server Authority,DC=redmond,DC=corp,DC=microsoft,DC=com
> GET /v5.0/e60fd67ad25e5db5/picture HTTP/1.1
> User-Agent: curl/7.21.7 (x86_64-redhat-linux-gnu) libcurl/7.21.7 NSS/3.13.1.0 zlib/1.2.5 libidn/1.22 libssh2/1.2.7
> Accept: */*
< HTTP/1.1 302 Found
< Cache-Control: private, no-cache, no-store, must-revalidate
< Content-Length: 0
< Server: Live-API/16.2.1377.307 Microsoft-HTTPAPI/2.0
< X-Content-Type-Options: nosniff
< X-HTTP-Live-Request-Id: API.f3327e32-ae57-4650-8fe4-b71e5cc7c260
< X-HTTP-Live-Server: BAYMSG1030140
< Date: Thu, 22 Mar 2012 13:46:05 GMT
* Connection #0 to host apis.live.net left intact
* Closing connection #0




Como foi um status 302 (redirect), aí eu peguei o Location dele, em negrito, e re-executei o curl. A saída foi a seguinte (atente para o content-type):


* About to connect() to blufiles.storage.msn.com port 80 (#0)
*   Trying 65.55.254.44... connected
* Connected to blufiles.storage.msn.com (65.55.254.44) port 80 (#0)
> GET /y1m96xi_KMcovyZHJqwzv79EOZ2PeBcMFAR_lTBflFzg6fXdg4PV3tUqhZGe4Mqmmq-rZ9ju61M-VajC6sc4ghqMQ HTTP/1.1
> User-Agent: curl/7.21.7 (x86_64-redhat-linux-gnu) libcurl/7.21.7 NSS/3.13.1.0 zlib/1.2.5 libidn/1.22 libssh2/1.2.7
> Accept: */*
< HTTP/1.1 200 OK
< Cache-Control: private
< Content-Length: 2945
< Content-Type: image/jpeg
< Expires: Wed, 20 Jun 2012 13:49:58 GMT
< Last-Modified: Wed, 29 Sep 2010 22:29:20 GMT
< P3P: CP="BUS CUR CONo FIN IVDo ONL OUR PHY SAMo TELo"
< X-MSNSERVER: BLU____2040226
< X-SqlDataOrigin: S
< X-StreamOrigin: MC
< Content-Disposition: attachment; filename="y1m96xi_KMcovyZHJqwzv79EOZ2PeBcMFAR_lTBflFzg6fXdg4PV3tUqhZGe4Mqmmq-rZ9ju61M-VajC6sc4ghqMQ"
< X-Content-Type-Options: nosniff
< Date: Thu, 22 Mar 2012 13:49:57 GMT

(Aqui eu omiti o restante, que era a imagem em si)

Também acho que esse link pode te ajudar fazer isso em PHP, mas não testei:

--
Anderson Marques Ferraz
UEFS - Engenharia de Computação - 2006.1
Linux user #500881 - http://counter.li.org/

Money demands that you sell, not your weakness to men's stupidity, but your talent for their reason.
(Francisco d'Anconia)

Vitor

unread,
Mar 22, 2012, 7:32:23 PM3/22/12
to kohan...@googlegroups.com
o curl trata o redirecionamento e baixa o arquivo, e vc pode ler o header para pegar o mime do arquivo.

--
Você está recebendo esta mensagem porque se inscreveu no grupo "Kohana Php" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para kohan...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para kohana-php+...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/kohana-php?hl=pt-BR.
Reply all
Reply to author
Forward
0 new messages