Coquelicot is an easy to use server-side upload service written in Go.
It is compatible with the jQuery-File-Upload widget and supports chunked and resumable file upload.
Using Coquelicot, you can add upload functionality to your project very easily. Just download and unzip the Coquelicot binary distribution for your OS and configure the jQuery-File-Upload widget.
You can use a binary release or get the project if you have a working Go installation.
Grab the latest binary release for you system. Unzip it and run
$ ./coquelicot -storage /tmp/files -host localhost:9073
to store uploaded files into /tmp/files
and make the application listen on the loopback interface port 9073
(run coquelicot.exe
on Windows).
Grab the latest stable version with:
$ go get gopkg.in/gotsunami/coquelicot.v1
See the API documentation.
The fileupload
object needs the xhrFields
, maxChunkSize
and add
fields to be defined.
xhrFields
: enables sending of cross-domain cookies, which is required to properly handle chunks of data server-sidemaxChunkSize
: enables uploading chunks of fileadd
: overwrites the defaultadd
handler to support resuming file upload
Download the latest release of jQuery-File-Upload,
edit the js/main.js
file in the distribution and make the fileupload
initialization look like
(replacing the localhost:9073
part with the name:port of your server running the coquelicot
program):
$('#fileupload').fileupload({
// Send cross-domain cookies
xhrFields: {withCredentials: true},
url: 'http://localhost:9073/files',
// Chunk size in bytes
maxChunkSize: 1000000,
// Enable file resume
add: function (e, data) {
var that = this;
$.ajax({
url: 'http://localhost:9073/resume',
xhrFields: {withCredentials: true},
data: {file: data.files[0].name}
}).done(function(result) {
var file = result.file;
data.uploadedBytes = file && file.size;
$.blueimp.fileupload.prototype.options.add.call(that, e, data);
});
}
});