Avatar billede s0mmer Nybegynder
21. august 2009 - 10:42 Der er 16 kommentarer

Skrive binær data fra database til fil

Hej Eksperter,

Jeg har en database med binær data gemt i nogle felter.

Disse vil jeg gerne have skrevet til filer. Henholdvis html og pdf filer. Hvordan gør jeg dette? Det er noget jeg har kæmpet med længe, uden held..
Avatar billede foo85 Novice
21. august 2009 - 11:39 #1
det er noget tid siden jeg har arbejdet med ASP, men kan da huske at man skal bruge en 3.parts objekt for at skrive pdf filer - et eksempel kunne være http://www.asppdf.com/ , men jeg har ingen erfaringer med denne pakke...

HTML skulle være rimelig ligefrem - her skriver du jo i ASCII, så du kan bruge almindelige fil-skrivnings rutiner til dette...
Avatar billede s0mmer Nybegynder
21. august 2009 - 11:42 #2
foo85 > Måske tager jeg fejl. Men jeg troede at man mere eller mindre kunne tage hvilket som helst format og gemme og åbne det når det var i binær?

Men derudover siger du at jeg bare kan gemme html filer som når jeg gemmer tekst filer?
Avatar billede foo85 Novice
21. august 2009 - 11:48 #3
jeg er ikke sikker...

Nu bliver jeg lidt i tvivl, tænkte ikke så meget over det var binære data...

Med hensyn til din HTML - hvordan ser de binære data ud? hvad indeholder de?
Avatar billede s0mmer Nybegynder
21. august 2009 - 11:51 #4
Nu prøvede jeg lige igen som du sagde og bare gemme htm filer som hvis jeg lavede en tekst fil med asp. Når jeg klikker på htm filen får jeg bare en fil med en masse tegn(uddrag):

7z¼¯'&#65533;ȍ5ƒˆ &#65533;&#65533;&#65533;&#65533;&#65533;&#65533;T&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;üm>&#65533;w®Óã£ç—¾N ³áquk!¹8¼tRÜTD¬õ³Ž©VÌô=Å2ÿÅÓO°Ë)Á ؤ…×èôü'srÊ9(4t‹ÒêõoäåŒ~Á· ˺#/HNq14¥ÇÓÒÞ xøÌ•LÊIã5î÷W8U:á¿WиGé'±2$U#û+_G¢œý>Þ4EËŁƒ&#65533;K¡nd5¹#,®·Åhxƒ¸hç5áAy~­‡žJ>A^ùÍ0‡Y G•¢Äý WÔê s—äå‡?™ _œ ìH¦14³îtU ¿ê5Õ1ÌÒ]Qé¹â¾‡§bFÊ ë¡×éxM+¡ îœf¥;ò»·=‹­q•¢DŠ`Ñ ¼Ä6e‘#΢K~EdSBÈo¿PÙ>,5Qe‚CŒó¢4"Tü8RŠ$¾‡œ˜?á7«ý%®¡*IW]ƒßMí‚}nË3¾â%¹§mÑ2}7µÓDKrEöâš8/ûçC"¾±e¹‰VOÍË«²0&—žG*epò‚Ø™jÞ8¼€[Šìh-RÀJ5 ÜQ¿Œe%¯0!›=SãaR<éót÷gÓ]'¯(†ÊDo3¨Õ] žk¯HÍlÉ
Avatar billede foo85 Novice
21. august 2009 - 11:57 #5
problemet er at man ikke "bare" kan aflæse binære data - de skal som regel behandles, så data kan findes frem i aflæsningsvenlig format...
Også derfor vi er nød til at vide hvilke former for data der er i det binære...
Avatar billede s0mmer Nybegynder
21. august 2009 - 12:02 #6
foo85 > Jeg er bange for jeg ikke er helt med.. Det er en flad html side med noget tekst. Andet indeholder den ikke.
Avatar billede foo85 Novice
21. august 2009 - 12:11 #7
ahh... havde jeg slet ikke fanget :)

problemet med html-siden ligger nok i at du skal sætte headeren til den rigtige type, før du udskriver...

måske noget i retning af:

Response.AddHeader("Content-Type: text/html")

ved ikke om det virker, har ingen erfaring med at modificere headere i ASP...
Avatar billede s0mmer Nybegynder
21. august 2009 - 12:21 #8
Igen er jeg ikke helt med.. Er det en header der skal skrives til filen sammen med alt det andet? Bemærk at jeg ikke udskriver den binære data. jeg ønsker at skrive det til en fil.
Avatar billede s0mmer Nybegynder
21. august 2009 - 12:25 #9
Lige nu gør jeg (bare) følgende:

                'Write html file
                ' Set up Constants
                Const ForWriting = 2 ' Input OutPut mode
                Const Create = True

                Dim MyFile
                Dim FSO ' FileSystemObject
                Dim TSO ' TextStreamObject

                ' Use MapPath function to get the Physical Path of file
                MyFile = Server.MapPath("pdf/tester.htm")

                Set FSO = Server.CreateObject("Scripting.FileSystemObject")
                Set TSO = FSO.OpenTextFile(MyFile, ForWriting, Create)

                    TSO.write theContent
               
                ' close TextStreamObject and
                ' destroy local variables to relase memory
                TSO.close
                Set TSO = Nothing
                Set FSO = Nothing

hvor theContent indeholder min binære data fra databasen.
Avatar billede foo85 Novice
21. august 2009 - 12:26 #10
undskyld - glemte det var til en fil...

kunne stadig godt forestille mig det var et problem med filtypen...

men ellers faldt jeg over nogle funktioner, som måske kan bruges:

http://www.motobit.com/tips/detpg_read-write-binary-files/
Avatar billede foo85 Novice
21. august 2009 - 12:29 #11
prøv eventuelt at ændre den linje der hedder:

TSO.write theContent

til

TSO.write BinaryToString(theContent)
Avatar billede s0mmer Nybegynder
21. august 2009 - 12:31 #12
foo85 > Ja dem har jeg også kigget på mange gange..

Jeg gik ud fra at funktionen jeg skulle bruge var SaveBinaryData, men jeg får bare fejlen:
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

Går ud fra at det er fordi min binære data kommer fra et text felt (string) og funktionen gerne vil have et array af bytes..
Avatar billede foo85 Novice
21. august 2009 - 12:37 #13
er efterhånden ved at løbe tør for idéer...

Er du sikker på at data bliver hentet ud af din database helt korrekt? så der ikke allerede der opstår en eller anden fejl i dine data...
Avatar billede s0mmer Nybegynder
21. august 2009 - 12:40 #14
Også mig.. har kæmpet med det her i lang tid..

Ja det er jeg. Data'ene kommer fra en kollega som bruger samme database (data) i et delphi program til at generere disse htm og pdf filer. Det var også ham der nævnte at jeg "bare" skulle gemme disse binære data i en fil så jeg kunne vise dem.
Avatar billede foo85 Novice
21. august 2009 - 12:48 #15
problemet ligger nok i at Delphi og ASP ikke håndterer filer ens... Jeg må desværre give fortabt - det er ude over mine evner i ASP...
Avatar billede s0mmer Nybegynder
21. august 2009 - 12:53 #16
Det er helt iorden, men ellers tak for kampen..

.. jeg håber andre melder sig på banen
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