Avatar billede carstenandersen Nybegynder
14. december 2009 - 13:52 Der er 20 kommentarer og
1 løsning

Gemme billede på server ud fra URL

Hej eksperter

Jeg vil gøre det muligt for vores kunder direkte at redigere deres billeder via http://fotoflexer.com/api.php/. Nemt at få billedet med over via deres API og reelt også nemt at få billedet "med tilbage", men problemet opstår, når jeg vil gemme billedet på vores egen server. Deres API returnerer med en URL til billedet hos fotoflexer.com, f.eks. http://fotoflexer.com/Normal/temp2/76ca7673be9f3ddb288b7d076f636f86.jpg.

Hvordan gemmer jeg automatisk kundens nye billede? Har prøvet med alt muligt !!

På forhånd tak.
14. december 2009 - 14:06 #1
Hej Carsten.

Hvad er det præcist du ikke formår at løse ?

Jeg kender ikke præcist det API du omtaler, men hvis du kan få fat i billedet må du også kunne gemme det lokalt.
Avatar billede carstenandersen Nybegynder
14. december 2009 - 14:23 #2
Jeg vil gerne have det gemt på vores server, men har efter flere timer ikke kunnet få noget kode til at gøre det!

Har f.eks. prøvet noget ala:

<%
Response.ContentType = "image/gif"
Set HTTPObj = Server.CreateObject("AspHTTP.Conn")
HTTPObj.Url = "http://i.jubii.dk/rd/general/global_logo.gif"
HTTPObj.SaveFileTo = "/upload/"
HTTPObj.GetURL
%>

men det virker ikke (måske stien er forkert?). Har også prøvet noget med httpget..

Håber virkelig, at du har en kode, som virker ;-)
Avatar billede reino Nybegynder
14. december 2009 - 14:37 #3
Hej

Du skal nok ud i noget med xmlhttp

Prøv evt. at check dette link:

http://www.developerfusion.com/code/1971/retrieving-remote-image-properties-in-asp/
Avatar billede reino Nybegynder
14. december 2009 - 14:39 #4
hmmm, det er kun læsning af externe billeder ser jeg nu, men tror stadigvæk du skal bruge xmlhttp komponentet. :)
Avatar billede carstenandersen Nybegynder
14. december 2009 - 14:45 #5
Jeg er faktisk stødt på dette link i dag, men det virkede noget uoverskueligt :-) Til gengæld fik jeg koden i http://www.eksperten.dk/spm/293112 til at virke, men her mangler der "gem-funktionen". Kan du evt. tilføje "gem-funktionen" til http://www.eksperten.dk/spm/293112?
14. december 2009 - 14:47 #6
Får du nogle fejl når du forsøger at køre det kode du lige har postet ?
Avatar billede carstenandersen Nybegynder
14. december 2009 - 15:04 #7
Jeg får ikke fejl på koden - blot det røde kryds i venstre hjørne, som vises, når et billede ikke indlæses
Avatar billede reino Nybegynder
14. december 2009 - 15:09 #8
Sikker på der er skriverettigheder til mappen du gemmer til ? Og ligger billedet der hvor du gemmer det ?
Avatar billede carstenandersen Nybegynder
14. december 2009 - 15:15 #9
Mappen "upload" bruges generelt til upload af kundernes billeder, så den er med sikkerhed skriverettighed til denne mappe. Der bliver bare ikke gemt noget billede, når jeg loader siden?
Avatar billede reino Nybegynder
14. december 2009 - 15:16 #10
Hej igen

Har ikke lige mulighed fo at teste det, men faldt lige over dette link:

http://www.bigresource.com/Tracker/Track-asp-Wwk3Kn8z/

Kan være det kan give inspiration :)
Avatar billede carstenandersen Nybegynder
14. december 2009 - 15:33 #11
Har prøvet (har rettet CreateObject til Server.CreateObject):

<% Option Explicit
'*
'* Declare Constants
'*
Const cFIL = "76ca7673be9f3ddb288b7d076f636f86.jpg"
Const cOUT = "c:\"
Const cURL = "http://fotoflexer.com/Normal/temp2/"
'*
'* Fetch File
'*
Dim objXML
Set objXML = Server.CreateObject("Microsoft.XMLHTTP")
objXML.Open "GET", cURL & cFIL, False
objXML.Send
Dim binXML
binXML = objXML.ResponseBody
Set objXML = Nothing
'*
'* Save File
'*
Dim objADO
Set objADO = Server.CreateObject("ADODB.Stream")
objADO.Type = 1
objADO.Open
objADO.Write binXML
objADO.SaveToFile cOUT & cFIL,2
Set objADO = Nothing
'*
'* Finish
'*
Response.Write cFIL & " downloaded."
%>

men får blot:

ADODB.Stream error '800a0bbc'

Write to file failed.
Avatar billede reino Nybegynder
14. december 2009 - 15:37 #12
Const cOUT = "c:\" skal nok have ændret til en url på serveren hvor scriptet ligger, ellers prøver den at gemme filen på c drevet på serveren, Write to file failed.  er fejl på skriverettighed
Avatar billede carstenandersen Nybegynder
14. december 2009 - 15:53 #13
Prøvede faktisk også med:

Const cOUT = "/upload/"

men her kom samme fejlmeddelelse???
Avatar billede reino Nybegynder
15. december 2009 - 10:19 #14
Hej igen, har lige fået testet det og det virker perfekt her.

Prøv evt. at angiv den absolutte sti på Const Cout, jeg benyttede:

Const cOUT = "e:\www\test\www\grafik\"
Avatar billede carstenandersen Nybegynder
15. december 2009 - 10:46 #15
Helt kanon, så må det være stien til vores server, som "blot" skal ændres. Her til morgen har jeg faktisk sendt et support-spg. til vores udbyder, så der afventer jeg lige svar.

Jeg vender tilbage, så snart jeg hører fra vores udbyder.
Avatar billede carstenandersen Nybegynder
15. december 2009 - 13:55 #16
Så har jeg fået stien fra vores udbyder og nu kan jeg gemme :-) :-) Der er dog en lille detalje. Når jeg så vil erstatte billedefilen med Request.QueryString("image"), kommer der en fejlmeddelelse. Koderne er nye for mig, så jeg har lidt svært ved at ændre det, så reino, måske du lige kan se det?

URL´en som returneres:
http://www.mitdomæne.dk/brugere/brugerbilleder/fotoflexer.asp?image=http://fotoflexer.com/Normal/temp2/e6cab707b907b09fad642bdc39cdfa3d.jpg

Prøvet med:
<%
Billedefil = Request.QueryString("image")
Billedefil = Split(Billedefil, "temp2/") (1)
%>

<% Option Explicit
'*
'* Declare Constants
'*

Const cFIL = "" & Billedefil & ""
Const cOUT = "D:\www1\wwwroot\upload\"
Const cURL = "http://fotoflexer.com/Normal/temp2/"
'*
'* Fetch File
'*
Dim objXML
Set objXML = Server.CreateObject("Microsoft.XMLHTTP")
objXML.Open "GET", cURL & cFIL, False
objXML.Send
Dim binXML
binXML = objXML.ResponseBody
Set objXML = Nothing
'*
'* Save File
'*
Dim objADO
Set objADO = Server.CreateObject("ADODB.Stream")
objADO.Type = 1
objADO.Open
objADO.Write binXML
objADO.SaveToFile cOUT & cFIL,2
Set objADO = Nothing
'*
'* Finish
'*
Response.Write cFIL & " downloaded."
%>

Fejlkode:
Microsoft VBScript compilation error '800a0400'

Expected statement

/brugere/brugerbilleder/fotoflexer.asp, line 6

Option Explicit
^

Du skal virkelig på forhånd have tak for din store indsats og jeg smider gerne flere point ind!
Avatar billede reino Nybegynder
15. december 2009 - 14:36 #17
Hejsa,

Det var så lidt :).

Du skal først og fremmest lige putte <% Option Explicit op som den første linje i scriptet
Avatar billede carstenandersen Nybegynder
15. december 2009 - 15:05 #18
Det havde jeg faktisk også prøvet, altså:

<% Option Explicit

Billedefil = Request.QueryString("image")
Billedefil = Split(Billedefil, "temp2/") (1)

'*
'* Declare Constants
'*

....

men fejler med:

Microsoft VBScript compilation error '800a0415'

Expected literal constant

/brugere/brugerbilleder/fotoflexer.asp, line 10

Const cFIL = "" & Billedefil & ""
---------------------------------^

??
Avatar billede carstenandersen Nybegynder
15. december 2009 - 20:42 #19
Der skal vel indsættes noget "Dim Billedefil", men ellers driller det fortsat???
Avatar billede carstenandersen Nybegynder
15. december 2009 - 22:28 #20
Er nu lykkedes med en helt anden kode :-) :-) Blot ved:

<%
Response.ContentType = "image/jpg"
Set HTTPObj = Server.CreateObject("AspHTTP.Conn")
HTTPObj.Url = "http://www.linktilbillede.dk/billede.jpg"
HTTPObj.SaveFileTo = "D:\www1\wwwroot\upload\mitbillede.jpg"
HTTPObj.GetURL
%>

Tak til jer begge, men naturligvis en særlig stor tak til Reino! Smid nogle svar og størstedelen af pointene går helt naturligt til Reino.
Avatar billede reino Nybegynder
16. december 2009 - 03:17 #21
Hejsa

ahh, kunne gøres meget mere simpelere . Super du fik det til at virke, det vigtigste

Hermed svar og takker :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester