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);

 

posted on 2015-03-19 11:03  lyqu  阅读(232)  评论(0)    收藏  举报