A growing number of web applications are making more and more use of client-side technologies because thanks to Ajax, it is now possible to write more fluid and more responsive web applications using only client-side technologies.
Now, web developers from all around the globe are releasing really interesting utilities and applications using only client-side technologies, many of which used to be within the domain of server-side technologies.
But when it comes to binary files, helping hands from server-side technologies are often necessary.
So I googled around to see what I can do about binary files with Ajax and found this Marcus Granado’s post at http://mgran.blogspot.com/2006/08/downloading-binary-streams-with.html
What he posted there worked like a charm for FireFox and Safari but I couldn’t get it to work for IE.
But luckily, within the same page, someone had posted up a solution for IE as a comment, which is written in VBScript.
So I put them all together in this BinFileReader function, which provides cross-browser support and helper methods to easily access the binary contents.
* BinFileReader: http://www.heypage.com/nagoon97/BinFileReader/BinFileReader.js
|getFileSize()||Return the file size|
|getFilePointer()||Return the reading position|
|movePointerTo(iTo)||Move the reading position to iTo.|
|movePointer(iDirection)||Move the reading position in iDirection.|
|For all the following read functions,
- The reading position will move to the end of where the content is last read
- When iFrom is ommited, current reading position is used
|readNumber(iNumBytes, iFrom)||Read and return iNumBytes-byte number starting at iFrom.|
|readString(iNumChars, iFrom)||Read and return iNumChars characters starting at iFrom.|
|readUnicodeString(iNumChars, iFrom)||Read and return iNumChars unicoded characters starting at iFrom.|
var bmpFile = new BinFileReader(“image.bmp”);
var width = bmpFile.readNumber(4);
var height = bmpFile.readNumber(4);
* Related Posts