A file / image / paste upload server with a focus on embedding. Written in Go You can use contented as a standalone upload server, or you can use the SDK to embed its upload widget into another website. =FEATURES= - Drag and drop upload - Multiple files upload - Pastebin upload - Custom drawing upload ([url=https://github.com/Leimi/drawingboard.js]via[/url]) - Ctrl-V upload - SDK-oriented design for embedding, including CORS support - Mobile friendly HTML interface - Preserves uploaded filename and content-type metadata - Hash verification (SHA512/256) - Detect duplicate upload content and reuse storage - Options to limit the upload filesize and the upload bandwidth - Short URLs (using [url=http://hashids.org]Hashids[/url] algorithm) =USAGE (SERVER)= `Usage of contented: -data string Directory for stored content (default "") -db string Path for metadata database (default "contented.db") -enableHomepage Enable homepage (disable for embedded use only) (default true) -listen string (default "127.0.0.1:80") -max int Maximum size of uploaded files in MiB (set zero for unlimited) (default 8) -speed int Maximum upload speed in bytes/sec (set zero for unlimited) -title string Title used in web interface (default "contented") -trustXForwardedFor Trust X-Forwarded-For reverse proxy headers ` If you are hosting behind a reverse proxy, remember to set its post body size parameter appropriately (e.g. `client_max_body_size` for nginx). =USAGE (HTTP)= The server responds on the following URLs: - `/get/{ID}`: Download item content - `/info/{ID}`: Get item content metadata (JSON) - `/about`: Get server metadata (JSON) =USAGE (EMBEDDING FOR WEB)= Your webpage should load the SDK from the contented server, then call the `contented.init` function to display the upload widget over the top of an existing DOM element. Your callback will be passed an array of file IDs of any uploaded items. ` contented.init("#target", function(/* String[] */ items) {}); ` =CHANGELOG= ????: - Feature: Drawing mode - Feature: Ctrl+V image upload - Feature: Option to trust X-Forwarded-For headers when using a reverse proxy - Feature: Add `getDownloadURL`, `getInfoJSONURL`, `getPreviewURL` SDK methods - Feature: Option to disable uploading via the homepage - Feature: Add button to repeat when uploading from homepage - Enhancement: Automatically load library dependencies - Enhancement: Display homepage widget using the full screen size - Include drawingboard.js 0.4.6 (MIT license) - Fix a cosmetic issue with javascript console output - Fix a cosmetic issue with error messages if an upload failed 2017-10-08: 1.0.1 - Fix an issue with CORS preflight requests - Fix an issue with index URLs 2017-10-08: 1.0.0 - Initial public release - Include jQuery 1.12.4 (MIT license)