Inserimento e lettura Campi OLE con tipo Binary





https://www.motobit.com/tips/detpg_read-write-binary-files/


Nozioni di base
VBScript e JScript / JavaScript non hanno funzioni / comandi nativi per leggere e scrivere file, poiche' questi linguaggi sono stati progettati come linguaggi di programmazione "sicuri" sul lato client. L'accesso negato al file system e' la sua caratteristica principale.
Il codice ASP lato server e le applicazioni hanno altri requisiti di lavoro, l'accesso al file system (file di lettura / scrittura) e' all'inizio di essi. L'unico modo per lavorare con i file e' utilizzare l'oggetto ActiveX o COM incorporato o esterno.
Microsoft ha risolto questo problema usando FileSystemObject - ma l'oggetto non e' in grado di leggere / scrivere file binari (c'e' qualche soluzione per usarlo anche per archiviare file binari - vedi codice qui sotto - ma puoi solo leggere file di testo con questo oggetto).
Molte persone lavorano su questa semplice attivita' in C ++, VBA, Delphi e altre lingue per creare oggetti, che consentono di leggere i dati binari. Uno di questi grandi oggetti e' la nostra classe ByteArray (membro della libreria ScriptUtilities ), che ti permette di leggere e scrivere file binari, lavorare con dati binari usando blocchi, convertirli in / da stringa Unicode usando piu' di 100 pagine di codice, convertire in stringa esadecimale , ecc

. Vedere il caricamento di file pure-asp con barra di avanzamento se si desidera caricare e salvare file dal lato client.
Questo articolo mostra diversi modi per lavorare con file binari su computer locali e remoti (con http / ftp) usando oggetti gratuiti di Microsoft.

1. Oggetto ADODB.Stream
ADODB.Stream e' un primo oggetto che puoi usare per leggere / scrivere file di testo e binari. L'oggetto e' incluso in ADO 2.5 e versioni successive.

a) SaveBinaryData
Funzione SaveBinaryData (FileName, ByteArray)
Const adTypeBinary = 1
Const adSaveCreateOverWrite = 2

'Crea oggetto Stream

Dim BinaryStream
Set BinaryStream = CreateObject ( "ADODB.Stream" )

'Specifica tipo di flusso - vogliamo Per salvare i dati binari.

BinaryStream.Type = adTypeBinary

'Aprire il flusso di e scrivere dati binari A sull'oggetto

BinaryStream.Open
BinaryStream.Write ByteArray

'Salva dati binari Per disco

BinaryStream.SaveToFile FileName, adSaveCreateOverWrite
End Function
b) SaveTextData
ADODB.Stream ti consente anche di salvare i dati di testo e di specificare il set di caratteri (codepage) per la conversione dei dati da testo a binario (rispetto all'oggetto Scripting.TextStream).

Funzione SaveTextData (FileName, Text, CharSet)
Const adTypeText = 2
Const adSaveCreateOverWrite = 2

'Crea oggetto Stream

Dim BinaryStream
Set BinaryStream = CreateObject ( "ADODB.Stream" )

'Specifica tipo di flusso - vogliamo Per salvare i dati di testo / stringa.

BinaryStream.Type = adTypeText

'Specificare charset Per i dati del testo sorgente (unicode).

Se Len (CharSet)> 0 Quindi
BinaryStream.CharSet = CharSet
Finisci se

'Aprire il flusso di e scrivere dati binari A sull'oggetto

BinaryStream.Open
BinaryStream.WriteText Text

'Salva dati binari Per disco

BinaryStream.SaveToFile FileName, adSaveCreateOverWrite
End Function




c) ReadBinaryFile
Funzione ReadBinaryFile (FileName)
Const adTypeBinary = 1

'Crea oggetto Stream

Dim BinaryStream
Set BinaryStream = CreateObject ( "ADODB.Stream" )

'Specifica tipo di flusso - vogliamo Per ottenere i dati binari.

BinaryStream.Type = adTypeBinary

'Apri il flusso

BinaryStream.Open

'Carica i dati del file dal disco Per eseguire lo streaming dell'oggetto

BinaryStream.LoadFromFile FileName

'Apri il flusso e ottieni dati binari dall'oggetto

ReadBinaryFile = BinaryStream.Read
End Function
d) ReadTextFile
Funzione ReadTextFile (FileName, CharSet)
Const adTypeText = 2

'Crea oggetto Stream

Dim BinaryStream
Set BinaryStream = CreateObject ( "ADODB.Stream" )

'Specifica tipo di flusso - vogliamo Per ottenere i dati binari.

BinaryStream.Type = adTypeText

'Specificare charset Per i dati del testo sorgente (unicode).

Se Len (CharSet)> 0 Quindi
BinaryStream.CharSet = CharSet
Finisci se

'Apri il flusso

BinaryStream.Open

'Carica i dati del file dal disco Per eseguire lo streaming dell'oggetto

BinaryStream.LoadFromFile FileName

'Apri il flusso e ottieni dati binari dall'oggetto

ReadTextFile = BinaryStream.ReadText
End Function
2. Oggetto Scripting.FileSystemObject
È inoltre possibile utilizzare l'oggetto TextStream dalla libreria di script per archiviare dati binari. Questa funzione puo' essere utilizzabile su server senza ADO installato. Questa funzione utilizza BinaryToString da Converti dati binari (BinaryRead) in una stringa dell'articolo VBS .

a) SaveBinaryDataTextStream
Funzione SaveBinaryDataTextStream (FileName, ByteArray)
'Crea oggetto FileSystemObject

Dim FS: Set FS = CreateObject ( "Scripting.FileSystemObject" )

'Crea oggetto flusso di testo

Dim TextStream
Set TextStream = FS.CreateTextFile (FileName)

'Convertire i dati binari Per testo e scriverli Per il file

TextStream.Write BinaryToString (ByteArray)
End Function
3. WinHttpRequest (XMLHTTP, ServerXMLHTTP) e file remoti.
Microsoft ha creato diversi oggetti, che consentono di leggere file binari e di testo remoti. Il primo era Microsoft.XMLHTTP - l'oggetto utilizza l'API WinINET, quindi non e' una buona idea usarlo sullo script ASP lato server. Grazie all'API WinINET, XMLHTTP ha una grande funzionalita': supporta qualsiasi URL: http, https, ftp e gopher. L'URL e' simile al protocollo: // nomeutente: password @ server / cartella / file? Parametri.

Altri oggetti MS HTTP utilizzano la nuova interfaccia WinHTTP. Esistono tre oggetti che e' possibile utilizzare:
MSXML2.ServerXMLHTTP
WinHttp.WinHttpRequest.5
WinHttp.WinHttpRequest
ServerXMLHTTP e WinHttpRequest oggetti hanno molte proprieta' e metodi, che consentono di specificare proxy, intestazioni di richiesta aggiuntive e cosi' via.
Puoi scaricare le ultime versioni degli oggetti WinHttp dal sito msdn , sono anche incluse in alcuni service pack di Windows e nuove versioni di Windows.
Vedi anche pubblicare dati binari su URL da WSH / ASP / VBA / VBS .

a) BinaryGetURL
Funzione BinaryGetURL (URL)
'Crea un oggetto Http, usa uno dei quattro oggetti

Dim Http
' Imposta Http = CreateObject ( "Microsoft.XMLHTTP" )

' Set Http = CreateObject ( "MSXML2.ServerXMLHTTP" )

Set Http = CreateObject ( "WinHttp .WinHttpRequest.5.1" )
' Set Http = CreateObject ( "WinHttp.WinHttpRequest" )


' Invia richiesta Per URL

Http.Open "GET" , URL,falso
Http.Send
'Ottieni dati di risposta come stringa

BinaryGetURL = Http.ResponseBody
End Function
È possibile utilizzare la proprieta' ResponseText per ottenere i dati del documento come stringa (o funzione VBS BinaryToString ).










( inserimentoeletturacampiolecontipobinary.html )- by Paolo Puglisi - Modifica del 17/12/2023