node.js 上传文件时如何释放掉出错的文件资源

B02512 2013-12-14 08:06:51
大家好,当我上传时,如果出错,如何释放掉出错的文件呢?

upload:function(req, res){
try{
req.form.on('part', function (part) {
dealwithfile(part.byteCount, part);
});
}catch(err){
//这里如何释放掉客户端上传的文件}
}

如果不做任何出错处理,这里会把系统卡住。 Client会拿不到response。

我试了几种办法都不行:
1 request.connection.destroy();

这个关掉connection的话,我的response消息也发送不到client端了。因为request和response占用的同一个connection。

2 try { throw new Error("Stopping file upload..."); } catch (e) { res.end(e.toString()); }

制造异常,终止文件上传,但是实验证明client还是拿不到服务端的response。程序依然被卡住。

3 part.resume();

这个方法虽然行,但是会消耗网络资源和服务器资源,因为client要把所有的文件全部上传到服务器端。如果文件一大,消耗网络和服务器资源就相当是个大问题了。

目标最好是让client端取消或者不要上传文件,并且服务端可以正常发送返回response信息给客户端。
请问谁有更好的办法解决这个问题吗?
...全文
170 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
B02512 2014-02-27
  • 打赏
  • 举报
回复
谢谢.我会试一试你的方法.
白色的海 2013-12-16
  • 打赏
  • 举报
回复
上传下载最好不要在nodejs上完成,可以考虑用nginx做反向代理来完成文件的下载和上传。 竟可能让nodejs负责客户请求,业务处理方面的事务。 高计算密集和高io处理的事务,分离出去。

87,916

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧