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 ). |