node.js中文件上传的一种方法

发布于201255日 -

使用node.js处理上传文件容易想到的做法是使用express来处理post数据然后将数据存在文件系统中但在千寻中这种方法看起来并不够理想千寻中我们一直在使用socket.io作为通讯的媒介因此在这里我们需要考虑使用一种能直接利用socket.io完成通讯的做法

通过查阅phonegap的文档我们发现phonegap提供了一个名为navigator.camera.getPicture的接口通过使用这个接口我们可以得到经过base64格式编码的图像数据我们只需要将这个数据通过socket.io发给服务器即可

进一步查阅node.js的文档我们发现Buffer类可以实现base64的编解码使用这个类即可轻松完成我们所需的任务摘录部分服务器端代码如下

function updatePortrait(data, callback){
    socket.get('uid', function (err, uid) {
        if (!uid) return;
        var decodedImage = new Buffer(data, 'base64');
        fs.writeFile('../client/portraits/' + uid +'.jpg', decodedImage,
            function (err) { callback(err); });
    });
}