我正在尝试将我的Android客户端上的图像上传到我的节点js服务器上。在客户端,我使用回调捕获图像,这给我一个byte [],然后在将路径发布到我的服务器之前保存到我的内部存储中(这是推荐的方法吗?)。
我有一个我内部保存的byte []文件
FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(image);
fos.close();
File file = new File(getFilesDir() + "/" + FILENAME);
path = file.toString();
然后使用socket.io连接,我将文件的路径发送到我的服务器
socket.emit("upload_image", _id, path);
在服务器端,我监听emit并尝试使用模块gridjs将图像文件保存到我的数据库(mongodb)
socket.on('upload_image', function (_id, img) {
var gs = gridjs(db);
var readStream = fs.createReadStream(img).pipe(gs.createWriteStream('test-file'));
readStream.on('error', function (err) {
console.log("caught: ", err);
});
readStream.on('data', function (data) {
console.log(data);
});
readStream.on('open', function () {
});}
服务器响应客户端的emit,但尝试创建读取流时会引发错误
Error: ENOENT, open '/data/data/com.example.myapplication/files/image-2015-05-31_17-04-59.png'
我不确定我的路径是否正确,或者我是否错误地使用了createReadStream。非常感谢任何反馈!