up.html:
<html> <head> </head> <body> <input type="file" id="file1" name="myfile" /> <br/> size: <span id="mysize"></span> <br> sent: <span id="mysent"></span> <br> <br/> <input type="button" value="try" onclick="upload()" /> <script src="http://code.jquery.com/jquery-1.11.2.min.js"></script> <script> function upload() { var file = document.getElementById('file1').files[0]; $("#mysize").text(file.size); //console.log(file); var blobSize = 300 * 1024; //300k sendData(file, 0, blobSize); } function sendData(file, start, blobSize) { var end = start + blobSize; end > file.size && (end = file.size); var blob = file.slice(start, end); var reader = new FileReader(); reader.readAsArrayBuffer(blob); reader.onload = function(event) { $.ajax({ type: "post", url: "?filename=" + file.name + (start > 0 ? "&append=1" : ""), data: event.target.result, processData: false, success: function(res) { console.log(res); blob = null; reader = null; $("#mysent").text(end); if (end < file.size) { sendData(file, end, blobSize); } } }); }; } </script> </body> </html>
nodejs:
var http = require("http"); var url = require("url"); var fs = require("fs"); var server = http.createServer(function(req, res) { var obj = url.parse(req.url, true); var filename = obj.query["filename"]; var path = __dirname + "/upload/" + filename; if (filename) { var fileStream; if (obj.query["append"]) { fileStream = fs.createWriteStream(path, { flags: "a" }); } else { fileStream = fs.createWriteStream(path); } req.pipe(fileStream); res.end(req.url); } else { fs.readFile("up.htm", function(err, data) { res.end(data); }); } }); // Server would listen on port server.listen(88);