【问题标题】:Upload file using NodeJS and node-formidable使用 NodeJS 和 node-formidable 上传文件
【发布时间】:2011-07-28 16:28:39
【问题描述】:

我使用 node.js 和强大的模块成功上传文件, 保存在磁盘上的文件格式不正确(编码错误) 例如如果我上传图片我无法查看,如果我上传 txt 文件 gedit 提供以下消息: “gedit 无法检测到字符编码。 请检查您是否尝试打开二进制文件。 从菜单中选择一种字符编码,然后重试。”

代码如下:

form.encoding = 'utf-8';
form.parse(req, function(err, fields, files) {
    fs.writeFile('test.js', files.upload,'utf8', function (err) {
          if (err) throw err;
          console.log('It\'s saved!');
    });
});

【问题讨论】:

    标签: javascript file-upload node.js serverside-javascript


    【解决方案1】:

    表单是否设置为 enctype="multipart/form-data"?

    我只在 Express 中使用了强大的功能 - Express 示例运行良好:

    https://github.com/visionmedia/express/tree/master/examples/multipart

    【讨论】:

      【解决方案2】:

      问题是 files.upload 不是文件的内容,它是来自 node-formidable 的 File 类的实例。

      看看:

      https://github.com/felixge/node-formidable/blob/master/lib/file.js

      您可以像这样访问上传文件的路径并使用 fs.rename() 将其移动到您想要的位置,而不是再次尝试将文件写入磁盘:

      fs.rename(files.upload.path, 'yournewfilename', function (err) { throw err; });
      

      【讨论】:

      • 什么是fs。我没有看到它定义的任何地方
      猜你喜欢
      • 2022-10-07
      • 2013-11-29
      • 1970-01-01
      • 1970-01-01
      • 2016-10-11
      • 1970-01-01
      • 2019-06-12
      • 1970-01-01
      • 2014-01-04
      相关资源
      最近更新 更多