Toon posts:

[asp] Binaire string omszetten naar bestand

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil graag een binaire string omzetten naar een bestand in asp. Welk component kan ik hier het beste voor gebruiken?
code:
1
2
3
For i = 1 to LenB(bstrSomeBinairyString)
        oFile.Write Chr(AscB(MidB(bstrSomeBinairyString, i, 1)))
    Next

dit duurt een eeuw dus liever een andere oplossing.

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:11
Kun je niet die binaire string in één keer wegschrijven?

https://fgheysels.github.io/


Verwijderd

Topicstarter
Op vrijdag 07 juni 2002 19:36 schreef whoami het volgende:
Kun je niet die binaire string in één keer wegschrijven?
nope

  • zoepercavia
  • Registratie: September 2001
  • Laatst online: 26-12-2025
het kan wel anders:
doe een Response.binaryWrite(binaryStr) (doch niet officieel supported)

Stel daarna conttent-type enzo anders in:
code:
1
2
response.contenttype="application/x-msdownload"
response.addheader "Content-Disposition","attachment; filename=bestand.bin"

direct opslaan moet ook kunnen, maar dat weet ik niet direct...

Panacea.NL als je geinteresserd bent in IT en Geneeskunde!


Verwijderd

Topicstarter
Op vrijdag 07 juni 2002 19:52 schreef zoepercavia het volgende:
het kan wel anders:
doe een Response.binaryWrite(binaryStr) (doch niet officieel supported)

Stel daarna conttent-type enzo anders in:
code:
1
2
response.contenttype="application/x-msdownload"
response.addheader "Content-Disposition","attachment; filename=bestand.bin"

direct opslaan moet ook kunnen, maar dat weet ik niet direct...
het moet op de harddisk van de server komen te staan, niet van de client.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 06-09 09:41

gorgi_19

Kruimeltjes zijn weer op :9

Ik weet niet wat de omstandigheden zijn, maar misschien kan je er voor kiezen om de code als .vbs-bestand op de server op te slaan en deze iedere nacht om 12.00 bijvoorbeeld uit te laten voeren. Heb je geen probleem met lange wachttijden.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 03-09 15:18

Crazy D

I think we should take a look.

Je kan even kijken naar het ADODB.Stream object. Hiermee lees ik altijd binary files die ik wil uitspugen, volgens mij heeft dat ding ook een .Write methode waarmee je dacht ik naar file kan schrijven.

Exact expert nodig?


  • zoepercavia
  • Registratie: September 2001
  • Laatst online: 26-12-2025
code:
1
2
3
4
dim objStream = Server.createObject("ADODB.Stream")
objStream.Type = adTypeBinary 'of 1 als je de constanten niet gedefinieerd hebt
objStream.Write bstrSomeBinairyString
objStream.SaveToFile "myBinairyFile.bin"

dit zou het klusje moeten klaren als het goed is...

uitleg van alle functies van het Stream object staat op DevGuru (ideale site)

Panacea.NL als je geinteresserd bent in IT en Geneeskunde!


Verwijderd

Topicstarter
Op zaterdag 08 juni 2002 11:06 schreef zoepercavia het volgende:
code:
1
2
3
4
dim objStream = Server.createObject("ADODB.Stream")
objStream.Type = adTypeBinary 'of 1 als je de constanten niet gedefinieerd hebt
objStream.Write bstrSomeBinairyString
objStream.SaveToFile "myBinairyFile.bin"

dit zou het klusje moeten klaren als het goed is...

uitleg van alle functies van het Stream object staat op DevGuru (ideale site)
helaas werkt dit niet.

ik heb het zo geprobeerd
code:
1
2
3
4
5
Set objStream = Server.createObject("ADODB.Stream")
objStream.Type = 1
objStream.Write (bstrSomeBinairyString)
objStream.SaveToFile "myBinairyFile.bin"
objStream.Close

maar dan werkt het ook niet

  • Sjaaky
  • Registratie: Oktober 2000
  • Laatst online: 03-09 23:48
Het FileSystemObject
staat in de vbscript reference. (en natuurlijk ook in de msdn)
edit:

Oeps waarschijnlijk gebruikte je die al, maar 1 byte per keer wegschrijven is gewoon heeeeel erg langzaam.

Je kan beter eerst de hele string (of stukken van 1024 bytes ofzo) maken in een loopje. En die dan in 1 keer aan file.write geven.

  • zoepercavia
  • Registratie: September 2001
  • Laatst online: 26-12-2025
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Set objStream = Server.createObject("ADODB.Stream")
objStream.Open
objStream.Type = 1
objStream.Write getBinaryFile(Server.MapPath("/favicon.ico"))
objStream.SaveToFile Server.MapPath("/public/myBinairyFile.bin"), 2 '2=overwriten mag
objStream.Close

function getBinaryFile(fileSpec)
Dim adTypeBinary
adTypeBinary = 1
Dim oStream
set oStream = server.createobject("ADODB.Stream")
oStream.Open
oStream.Type = adTypeBinary
oStream.LoadFromFile fileSpec
getBinaryFile= oStream.read
set oStream=nothing
end function

dit moet werken! >:)
zorry.. ik was de .open vergeten, zorgt dat je alle rechten goed hebt staan, get BinaryFile trekt een file van de server en maakt er een mooie binary string van, kijk maar of je die nog nodig hebt...

Panacea.NL als je geinteresserd bent in IT en Geneeskunde!


Verwijderd

Topicstarter
Op zaterdag 08 juni 2002 17:17 schreef zoepercavia het volgende:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Set objStream = Server.createObject("ADODB.Stream")
objStream.Open
objStream.Type = 1
objStream.Write getBinaryFile(Server.MapPath("/favicon.ico"))
objStream.SaveToFile Server.MapPath("/public/myBinairyFile.bin"), 2 '2=overwriten mag
objStream.Close

function getBinaryFile(fileSpec)
Dim adTypeBinary
adTypeBinary = 1
Dim oStream
set oStream = server.createobject("ADODB.Stream")
oStream.Open
oStream.Type = adTypeBinary
oStream.LoadFromFile fileSpec
getBinaryFile= oStream.read
set oStream=nothing
end function

dit moet werken! >:)
zorry.. ik was de .open vergeten, zorgt dat je alle rechten goed hebt staan, get BinaryFile trekt een file van de server en maakt er een mooie binary string van, kijk maar of je die nog nodig hebt...
maar het moet uit een string komen. Ik probeer het met een voorbeeld uit te leggen.
code:
1
2
...
binstring=xml.responsebody

hoe zet ik "binstring" nou in een bestand?

  • zoepercavia
  • Registratie: September 2001
  • Laatst online: 26-12-2025
ehm de parameter voor write is een binarystring,
dus
code:
1
objStream.write binaryStr

en de gehele code:
code:
1
2
3
4
5
6
Set objStream = Server.createObject("ADODB.Stream")
objStream.Open
objStream.Type = 1
objStream.Write binstring
objStream.SaveToFile "binairyFile.bin", 2 '2=overwriten mag
objStream.Close

Panacea.NL als je geinteresserd bent in IT en Geneeskunde!


Verwijderd

Topicstarter
als ik dit
Op zaterdag 08 juni 2002 18:36 schreef zoepercavia het volgende:
ehm de parameter voor write is een binarystring,
dus
code:
1
objStream.write binaryStr

en de gehele code:
code:
1
2
3
4
5
6
Set objStream = Server.createObject("ADODB.Stream")
objStream.Open
objStream.Type = 1
objStream.Write binstring
objStream.SaveToFile "binairyFile.bin", 2 '2=overwriten mag
objStream.Close
doe krijg ik deze error:
code:
1
2
3
4
Error Type:
ADODB.Stream (0x800A0BB9)
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
/cnacks/admin/test.asp, line 4

  • zoepercavia
  • Registratie: September 2001
  • Laatst online: 26-12-2025
weet je zeker dat binstring binary is?
doe 's
code:
1
Response.Write(varType(binstring))

wat komt er dan uit?
probeer anders 's een .writeText...

misschien kan je ook vertellen hoe je je binarystring maakt, want dan kan er eventueel een andere oplossing zijn...

Panacea.NL als je geinteresserd bent in IT en Geneeskunde!


Verwijderd

Topicstarter
met een binaire methode moet je ook met een asci string kunnen behandelen.

  • zoepercavia
  • Registratie: September 2001
  • Laatst online: 26-12-2025
dat zal wel moeten, maar ado.stream doet dat niet, heb je die vartype nog geprobeerd?

Panacea.NL als je geinteresserd bent in IT en Geneeskunde!


Verwijderd

Topicstarter
dan staat er "8"

  • Sjaaky
  • Registratie: Oktober 2000
  • Laatst online: 03-09 23:48
Ik krijg het idee dat mijn vorige post totaal over het hoofd wordt gezien....

Verwijderd

Topicstarter
Sjaaky: Dat kan niet. Je zoekt namelijk eerst het nummer van de te bescrijven byte op, dat kan niet in blokken groter dan 1.

Dit moet toch ergens mee kunnen of ben ik nou gek???
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%
  Response.Buffer = True
  Dim objXMLHTTP, xml
  Set xml = Server.CreateObject("Microsoft.XMLHTTP")
    
  xml.Open "GET", _
    "http://www.4guysfromrolla.com/webtech/code/mitchell-pres.zip", _
    False

  xml.Send
    
  binstring=xml.responseBody

  Set xml = Nothing
%>

Hoe plaats ik binstring nou in een bestand. Dat is alles wat ik wil weten.

  • Sjaaky
  • Registratie: Oktober 2000
  • Laatst online: 03-09 23:48
Even uit het losse polsje, zonder te checken, er kunnen of-by-1 errors inzitten.
Dit is wat ik bedoel.
code:
1
2
3
4
5
6
7
8
9
10
11
12
len = lenB(bstrBinaryStr)
blockSize = 1024
counter = 0
while counter < len do
 buf = ""
 if counter+blockSize > len then blockSize = len - counter
 For i = 1 to blockSize
  buf = buf & Chr(AscB(MidB(bstrBinaryStr, counter+i, 1)))
 Next
 oFile.Write buf
 counter = counter + blockSize
wend

edit:
Vergeten de counter op te hogen

  • zoepercavia
  • Registratie: September 2001
  • Laatst online: 26-12-2025
als vartype 8 (subtype string) geeft dan kan je hem niet gebruiken in combinatie met .write, dan moet je .writetext gebruiken...
maar ik snap uberhaupt het nut niet van een binair bestand als je er een gewone string in stop?!

Panacea.NL als je geinteresserd bent in IT en Geneeskunde!


Verwijderd

Topicstarter
dat is om het ff uit te testen. Zie voorbeeld voor de reden
Pagina: 1