问题: 使用formaidable模块实现stream方式图片上传,报错
发布于 13 年前 作者 fcicada 7092 次预览 最后一次回复是 12 年前 来自
我是一nodejs新手,老板要求我能用nodejs实现stream方式上传图片,google良久,发现formidable很好用,也很受人们喜爱,然后在google找到许多例子,但是总是实现不了
var form = new formidable.IncomingForm();
form.parse( request, function( error, fields, files ) {
console.log( "Completed Parsing" );
if( error ){
response.writeHead( 500, { "Content-Type" : "text/plain" } );
response.end( "CRAP! " + error + "\n" );
return;
}
}
在这里的时候 总是报错 Error: MultipartParser.end(): stream ended unexpectedly: state = START,在github上有相关问题的讨论,研究良久仍不得其解,望各位帮忙,谢谢。
5 回复
没这么用过,我把我的一个老的例子贴出来,希望有点用。测了一下,还运行正常。
默认的formidable会将文件部分先保存到服务器的临时目录下面,然后在通过fs的方式进行后续操作。如果你只需要保存到服务端文件系统,那么可以在formidable里面指定临时路径位置就好了。但是如果你想保存到别的设备,比如其他的能够接受stream的地方(例如分布式文件系统),那么需要重载form.onPart方法,然后判断if(part.filename),表明这是一个文件,那么part参数就是stream了。
直接使用express3就行了。它包括了formidable
最新版本的 express3 已经用 https://github.com/superjoe30/node-multiparty 别误导人家了…
具体看这个吧… https://github.com/senchalabs/connect/blob/master/History.md