modulepackage
1.0.0
Repository: https://github.com/vincent-petithory/dataurl.git
Documentation: pkg.go.dev
# README
Data URL Schemes for Go

This package parses and generates Data URL Schemes for the Go language, according to RFC 2397.
Data URLs are small chunks of data commonly used in browsers to display inline data, typically like small images, or when you use the FileReader API of the browser.
Common use-cases:
- generate a data URL out of a
string
,[]byte
,io.Reader
for inclusion in HTML templates, - parse a data URL sent by a browser in a http.Handler, and do something with the data (save to disk, etc.)
- ...
Install the package with:
go get github.com/vincent-petithory/dataurl
Usage
package main
import (
"github.com/vincent-petithory/dataurl"
"fmt"
)
func main() {
dataURL, err := dataurl.DecodeString(`data:text/plain;charset=utf-8;base64,aGV5YQ==`)
if err != nil {
fmt.Println(err)
return
}
fmt.Printf("content type: %s, data: %s\n", dataURL.MediaType.ContentType(), string(dataURL.Data))
// Output: content type: text/plain, data: heya
}
From a http.Handler
:
func handleDataURLUpload(w http.ResponseWriter, r *http.Request) {
dataURL, err := dataurl.Decode(r.Body)
defer r.Body.Close()
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
if dataURL.ContentType() == "image/png" {
ioutil.WriteFile("image.png", dataURL.Data, 0644)
} else {
http.Error(w, "not a png", http.StatusBadRequest)
}
}
Command
For convenience, a dataurl
command is provided to encode/decode dataurl streams.
dataurl - Encode or decode dataurl data and print to standard output
Usage: dataurl [OPTION]... [FILE]
dataurl encodes or decodes FILE or standard input if FILE is - or omitted, and prints to standard output.
Unless -mimetype is used, when FILE is specified, dataurl will attempt to detect its mimetype using Go's mime.TypeByExtension (http://golang.org/pkg/mime/#TypeByExtension). If this fails or data is read from STDIN, the mimetype will default to application/octet-stream.
Options:
-a=false: encode data using ascii instead of base64
-ascii=false: encode data using ascii instead of base64
-d=false: decode data instead of encoding
-decode=false: decode data instead of encoding
-m="": force the mimetype of the data to encode to this value
-mimetype="": force the mimetype of the data to encode to this value
Contributing
Feel free to file an issue/make a pull request if you find any bug, or want to suggest enhancements.
# Packages
No description provided by the author
# Functions
Decode decodes a Data URL scheme from a io.Reader.
DecodeString decodes a Data URL scheme string.
EncodeBytes encodes the data bytes into a Data URL string, using base 64 encoding.
Escape implements URL escaping, as defined in RFC 2397 (http://tools.ietf.org/html/rfc2397).
EscapeString is like Escape, but taking a string as argument.
New returns a new DataURL initialized with data and a MediaType parsed from mediatype and paramPairs.
Unescape unescapes a character sequence escaped with Escape(String?).
UnescapeToString is like Unescape, but returning a string.
# Constants
EncodingASCII is ascii encoding for the data url.
EncodingBase64 is base64 encoding for the data url.