javascript - 使用node-formidable上传图片错误

标签 javascript node.js formidable

我正在学习《The Node初学者书》并做书中的练习,练习是呈现一张用户上传的图片。这是一个用node-formidable编写的示例,代码如下:

var formidable = require('formidable'),
http = require('http'),
util = require('util');

http.createServer(function(req, res) {
  if (req.url == '/upload' && req.method.toLowerCase() == 'post') {
    // parse a file upload
    var form = new formidable.IncomingForm();
    form.parse(req, function(err, fields, files) {
      res.writeHead(200, {'content-type': 'text/plain'});
      res.write('received upload:\n\n');
      res.end(util.inspect({fields: fields, files: files}));
    });
    return;
  }

  // show a file upload form
  res.writeHead(200, {'content-type': 'text/html'});
  res.end(
    '<form action="/upload" enctype="multipart/form-data" '+
    'method="post">'+
    '<input type="text" name="title"><br>'+
    '<input type="file" name="upload" multiple="multiple"><br>'+
    '<input type="submit" value="Upload">'+
    '</form>'
  );
}).listen(8888);

我使用 node filename.js 运行它,然后打开位于 http://localhost:8888/upload 的浏览器。 ,如下所示:

enter image description here

我输入一个名称并选择一个文件,然后它如下:

enter image description here

我点击上传按钮,响应如下:

received upload:

{ fields: { title: 'Hello Wolrd' },
  files: 
   { upload: 
      File {
        domain: null,
        _events: {},
        _eventsCount: 0,
        _maxListeners: undefined,
        size: 37417,
        path: '/tmp/upload_a306115e1e630a0c548b6d820fe803cb',
        name: 'myfile_icon_file_4.png',
        type: 'image/png',
        hash: null,
        lastModifiedDate: 2016-10-11T03:52:41.052Z,
        _writeStream: [Object] } } }

如何获取属性路径?为什么在那里创建一个单词File

最佳答案

该属性(property)path可以通过 File 获取对象,在其代码中定义了强大的对象。正如您所写的示例所示,您的 form.parse函数给你一张 File 的 map 名为 files 的对象(去搞清楚)。因此,如果您想获得 path值到您刚刚上传的文件,您将执行以下操作(使用键 upload 因为这就是您的 html inputname ):

var pathToFile = files['upload'].path;

请记住,这仅在服务器端以您的示例编写方式可用,因此要获得这样的路径,您需要将该行代码放在 form.parse 中。功能。

您在示例中给出的打印输出来自响应,这是客户端收到的内容。 util.inspect 您用来格式化您的响应是显式转换 fieldsfiles出于调试/检查目的,将对象转换为字符串表示形式,因此这就是您无法在客户端将它们作为变量访问的原因。如果您使用我上面写的行或建议的行概念,它将访问 path只要它在你的 form.parse 内函数其中 files存在于范围内。

关于javascript - 使用node-formidable上传图片错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39970617/

相关文章:

javascript - Flow Error Out 中的 Webpack 路径

javascript - 从数组 typescript 内的对象中过滤数据

javascript - 防止用户编辑 URL 以限制对服务器资源的访问

node.js - Claudia.js 创建 Lambda 函数时出现网络错误 - 120000 毫秒后超时

node.js - 解析具有强大文件名的表单值

javascript - 强大 - PUT 错误

javascript - Twitter Bootstrap 提前输入延迟

java - 查找要在 Selenium WebDriver 中使用的 HTML 元素

javascript - 对 NodeJS 服务器的超慢发布请求

node.js - Node 应用程序流文件直接上传到亚马逊s3