Yesterday I was updating an HTA (HTML Application) and needed to figure out how to convert an image into a base64 code that could be used in a stylesheet. I needed this to be able to embed an image in the source code instead of referencing an actual image. For this reason I wrote the following function (with the help of this post):
function convertImageToBase64(filePath) { var inputStream = new ActiveXObject('ADODB.Stream'); inputStream.Open(); inputStream.Type = 1; // adTypeBinary inputStream.LoadFromFile(filePath); var bytes = inputStream.Read(); var dom = new ActiveXObject('Microsoft.XMLDOM'); var elem = dom.createElement('tmp'); elem.dataType = 'bin.base64'; elem.nodeTypedValue = bytes; var ret = 'data:image/png;base64,' + elem.text.replace(/[^A-Z\d+=\/]/gi, '');}But it cannot work in IE9. I get an error saying Access is denied, IE doesn't allow manipulation of the type="file" input element from javascript due to security reasons. Setting the filename or invoking a click event to show the browser dialog will result in an "Access is denied" error on the form submit - Internet Explorer is clever about remembering what methods have been invoked.
文章標籤
全站熱搜
