| Where | Type | Optional | Default | Description |
|---|---|---|---|---|
| FileName | String | File to save data. | ||
| StartPosition | Variant | yes | 1 | Start file position to save SaveAs contents, based to 1. 0 means 'End of file', Empty or undefined means 'overwrite file'. |
| Length | Long | yes | All data | Number of bytes to write to the file. (1B - 2GB-1) |
| ||
<%
Set Binary = CreateObject("ScriptUtils.ByteArray")
Length = CLng(Request.ServerVariables("HTTP_Content_Length"))
Binary.ByteArray = Request.BinaryRead(Length)
Binary.SaveAs Server.MapPath(".") & "\data.post"
Response.Write "Request data (" & Binary.Length & " bytes): <br><pre>"
Response.Write Binary.String
Response.Write "</pre>"
%>
<form method=post>
<input value=XXXXXXXXXXX NAME=A>
<input type=submit>
</form> |
| ||
| See also Batch file conversion - character set and BOM detection of html files to detect files with BOM (unicode Little/Big, utf-8) | ||
'Save unicode string as UTF-8 with BOM
SaveBOMUTF "f:\222.txt", "ìšèøžýáíé"
Sub SaveBOMUTF(FileName, SomeString)
'1. save BOM header.
SaveBOMHeader FileName
Dim ByteArray
Set ByteArray = CreateObject("ScriptUtils.ByteArray")
'Convert the string to UTF-8
ByteArray.CharSet = "utf-8"
ByteArray.String = SomeString
'Save the UTF-8 string at position 4 of the file
'(after the 3bytes BOM header)
ByteArray.SaveAs FileName, 4
End Sub
Sub SaveBOMHeader(FileName)
'create byte array object
Dim ByteArray
Set ByteArray = CreateObject("ScriptUtils.ByteArray")
'the bytearray contains BOM header - 3 bytes.
ByteArray.SetSize 3
ByteArray(1) = &HEF
ByteArray(2) = &HBB
ByteArray(3) = &HBF
'Or you can use ByteArray.HexString = "EFBBBF" in v> 2.14
'Save the BOM header to the FileName
ByteArray.SaveAs FileName
End Sub |
| ||
You can use Post binary data to URL from WSH/ASP/VBA/VBS and Work with binary files in VBS - read and write local and remote files articles to read and send a binary file from a client-side.
| ||
<% 'This sample demonstrates store of large binary data. 'It accepts up to 2GB of a source data a PUT or POST SaveLargePostData "C:\temp\uploaddata.dat" Sub SaveLargePostData(DestFile) Const BlockSize = 4096 Dim TotalBytes, DataReaded, ReadBlockSize, BinaryData TotalBytes = Request.TotalBytes If TotalBytes > 0 Then Dim ByteArray: Set ByteArray = GetByteArray() For DataReaded = 0 To TotalBytes Step BlockSize If BlockSize + DataReaded > TotalBytes Then 'Last block, IIS6 does not accept to read more data ReadBlockSize = TotalBytes - DataReaded Else ReadBlockSize = BlockSize End If ByteArray.ByteArray = Request.BinaryRead(ReadBlockSize ) 'Save the block of a source data. If DataReaded = 0 Then 'The first block will overwrite existing file (if one) ByteArray.SaveAs DestFile Else 'Position of SaveAs (second parameter) is based to 1 ByteArray.SaveAs DestFile, 1 + DataReaded End If Next ' DataReaded Response.Write "<br>Source data (" & TotalBytes & _ "B) was saved to '" & DestFile & "'" End If ' TotalBytes>0 then End Sub 'Returns ByteArray object. Solves problem with registration and installation Function GetByteArray() On Error Resume Next Dim Binary Set Binary = CreateObject("ScriptUtils.ByteArray") 'Creates ByteArray object 'response.write hex(Err) If Err = &h46 Then On Error Goto 0 Err.Raise 5, "ScriptUtils.ByteArray", "Insufficient permissions to the scptult.ocx file. User: '" & GetUserName & "' must have read permission to the file." ElseIf Err = &h1ad Then On Error Goto 0 Err.Raise 6, "ScriptUtils.ByteArray", "Script Utilities is not correctly installed. Please, install Script Utilities on this server or copy and register scptutl.ocx file on this server." ElseIf Err = &h8007045A Then On Error Goto 0 Err.Raise 6, "ScriptUtils.ByteArray", "The evaluation version of Script Utilities was expired. Please install full version." ElseIf Err = &h8007007E Then On Error Goto 0 Err.Raise 6, "ScriptUtils.ByteArray", "The ScriptUtilities library (scptutl.ocx) is missing. Please copy the library or reinstall the software." ElseIf Err <> 0 Then Dim E, N N = Hex(Err) E = Err.Description On Error Goto 0 Err.Raise 6, "ScriptUtils.ByteArray", "Cannot create ScriptUtils.ByteArray object, Error: '" & N & " " & E & "'" End If Set GetByteArray = Binary End Function %> |