NodeJS - 无法读取新上传的文件

时间:2014-06-11 23:42:46

标签: ajax node.js file-upload express

我正在尝试构建一个系统(NodeJS + Express 4),该系统读取用户上传的文本文件,处理它并将其反馈给用户。我试图使用ajax上传,并且multer作为多部分数据的解析器。整个工作流程应该是这样的:

  1. 用户选择本地文件,然后单击上传按钮。
  2. 服务器收到文件,然后阅读。
  3. 服务器使用数据进行一些处理
  4. 发回结果
  5. 链接的每个部分都工作,除了服务器读取部分 - 有时文件没有完全读取,即使服务器发出文件上传完成的信号(我已经尝试了多个库,如multer,busboy,强大的触发文件上传完成事件)。我做了各种实验,这是我找到的(1000行文件):

    1. fs.readFile有时会过早结束。结果文件可以是100到1000行之间的任何位置。
    2. 缺少部分几乎总是最后一小块,感觉管道还没有完全冲洗。我已经尝试过1000行到200,000行之间的文件大小,并且总是缺少最后几百行。
    3. 使用流式传输几乎解决了这个问题 - 比如createReadStream,或者是逐行的byline,但有时结果可能是“未定义”或缺少最后几行,但频率要低得多。
    4. 触发读取两次,第二次几乎保证读取完整的1000行。
    5. 是否有强制NodeJS“刷新”上传的文件?不知怎的,我感觉上传完成事件被触发(无论库,并且每个人都依赖于FileSystem我猜)在最后一段文件被刷新之前。或者可能还有其他一些问题 - 读取静态文件总能得到正确的结果。我可以使用http POST表单,但我想使用ajax来改善用户体验。

      有什么想法?

0 个答案:

没有答案