2009-10-08 20 views
4

J'essaie de convertir une image (jpg) chargée via cfhttp en données binaires. Je ne peux pas utiliser cffile action="readBinary" car ce n'est pas un fichier local.Convertir une image du fichier CFHTTP en données binaires avec Coldfusion

+3

Juste un petit peu d'évangélisation Railo, re: "Je ne peux pas utiliser cffile action =" readBinary "car ce n'est pas un fichier local." - dans Railo, vous pouvez utiliser cffile pour n'importe quel fichier, même à travers http et ftp. :) –

Répondre

13

Voilà comment je gère, et je l'utiliser pour saisir et traiter des centaines d'images par jour avec ColdFusion 8.

<cfhttp 
    timeout="45" 
    throwonerror="false" 
    url="http://domain/image.jpg" 
    method="get" 
    useragent="Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12" 
    getasbinary="yes" 
    result="local.objGet" 
> 

<cfset local.objImage = ImageNew(local.objGet.FileContent)> 

Une fois que vous avez l'objet image, vous pouvez alors faire ce que vous voulez avec. Enregistrez-le sur le disque, redimensionnez, vous l'appelez :). J'ai évidemment omis toutes mes vérifications d'erreurs (200 codes d'état, est-ce une image, etc), mais cela devrait vous aider à démarrer.

5

je l'ai fait ce qui suit qui semble fonctionner:

<cfhttp url="http://foo.com/someImage.jpg" method="get" timeout="3" result="resp"> 
</cfhttp> 

<cfreturn resp.fileContent.toByteArray() /> 
+0

Comment écrire 'resp.fileContent.toByteArray()' dans un fichier? Je veux dire comment écrire des données binaires dans un fichier? – RRK