Avatar billede cht Nybegynder
03. november 2001 - 20:07 Der er 5 kommentarer og
1 løsning

Læsning af binære filer

Jeg ønsker at hente nogle binære data, men det bliver ikke vist som det skal.

Det virket fint når jeg bare skal hente fra en fil og bruger følgende kode:


    Const adTypeBinary = 1

    Set objStream = Server.CreateObject(\"ADODB.Stream\")

    objStream.Open
    objStream.Type = adTypeBinary
    objStream.LoadFromFile Server.Mappath(\"image.gif\")

    response.binarywrite objStream.Read

    objStream.Close
    Set objStream = Nothing



Men når jeg bruger følgende kode, så bliver filen ikke vist rigtigt:



<%
    Set fso = Server.CreateObject(\"Scripting.FileSystemObject\")
    Set txt = fso.OpenTextFile(server.mappath(\"image1.gif\"), 1)

    response.binarywrite txt.readall

    txt.close
    Set fso = Nothing
%>

Jeg har prøvet at lægge denne kode på følgende side:
http://www.bioonline.dk/hentfil.asp


Hvor den skulle hente dette billede:
http://www.bioonline.dk/image1.gif



Der er samme problem når jeg bruger følgende kode:


<%
Set pop3 = Server.CreateObject(\"JMail.POP3\")
pop3.Connect session(\"pop3username\"), session(\"pop3password\"), session(\"servername\"), session(\"serverport\")

    Set msg = pop3.Messages.item(pop3.count)

    Set Attachments = msg.Attachments

    Set at = Attachments(0)

    response.binarywrite at.data

pop3.disconnect
%>


Kan det skyldes at den opfatter indholdet af filen som tekst i stedet for binary. Eller skyldes at man skal konvertere fra tekst til binary eller findes der en anden løsning?


Avatar billede netsjov Nybegynder
04. november 2001 - 15:36 #1
i de 2 sidete koder loader den billedet som Ansi og ikke som binary.
Løsning:
I din første kode, bruger du ms\'s objekt til benary streams, hvad er der galt med det?

I det mail program, bliver du nok nød til at gemme filen på serveren før du sender den til brugeren.
Avatar billede cht Nybegynder
04. november 2001 - 15:48 #2
Problemet er netop at jeg i det mail program ikke har mulighed for først at gemme filen på serveren først.

Jeg mener at jeg har hørt at man kan konvertere fra Ansi til binary eller er det mig der husker forkert?
Avatar billede netsjov Nybegynder
04. november 2001 - 16:00 #3
Det det ser ud til at det er ansi der bliver skrevet ud på skærmen når du bruger pop 3 komponentet, så burde du jo kunne bruge FSO til at gemme filen bå disken.


Desuden kan du response et blillede ved at bruge:

response.redirect url\'en til billedet
Avatar billede cht Nybegynder
04. november 2001 - 16:11 #4

Det kan var måske lidt misvisende at lave et eksempel, hvor jeg bruger fso, når jeg ikke har adgang til det på den webserver, hvor mail programmet skal bruges.

Jeg kan desværre heller ikke bruge: response.redirect url\'en til billedet
når jeg ikke kan have filerne liggende på serveren.

Det er ikke for at være besværlig, men jeg tror der findes en smarte måde at løse problemet på end at gemme filen på disken først.
Avatar billede netsjov Nybegynder
04. november 2001 - 16:54 #5
Jeg fandt lige en funktionb til at converte fra String til Binary, det må da kunne bruges:
Function StringToBinary(S)
  Dim i, ByteArray
  For i=1 To Len(S)
    ByteArray = ByteArray & ChrB(Asc(Mid(S,i,1)))
  Next
  StringToBinary = ByteArray
End Function


Fx (ide til hvordan du drejer den):

Function StringToBinary(S)
  Dim i, ByteArray
  For i=1 To Len(S)
    ByteArray = ByteArray & ChrB(Asc(Mid(S,i,1)))
  Next
  StringToBinary = ByteArray
End Function




Set pop3 = Server.CreateObject(\"JMail.POP3\")
pop3.Connect session(\"pop3username\"), session(\"pop3password\"), session(\"servername\"), session(\"serverport\")

    Set msg = pop3.Messages.item(pop3.count)

    Set Attachments = msg.Attachments

    Set at = Attachments(0)

    response.binarywrite StringToBinary(at.data)

pop3.disconnect




Avatar billede cht Nybegynder
04. november 2001 - 17:00 #6
Ja, mange tak! Det virker perfekt. Det var lige det jeg stod og manglede.
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