whispervis/jsapi/filereader.go

26 lines
619 B
Go
Raw Normal View History

2018-09-11 22:52:06 +03:00
package jsapi
2018-09-11 16:23:37 +03:00
import "github.com/gopherjs/gopherjs/js"
// FileReader implements FileReader API for js.Object.
type FileReader struct {
*js.Object // FileReader object
}
// NewFileReader inits new FileReader.
func NewFileReader() *FileReader {
return &FileReader{
Object: js.Global.Get("FileReader").New(),
}
}
// ReadAll reads all data from blob using FileReader API.
func (fr *FileReader) ReadAll(blob *js.Object) []byte {
ch := make(chan []byte)
fr.Set("onload", func() {
ch <- js.Global.Get("Uint8Array").New(fr.Get("result")).Interface().([]byte)
})
fr.Call("readAsArrayBuffer", blob)
return <-ch
}