javascript - nodejs 在文件上传时抛出 ENOENT 错误

标签 javascript node.js file-upload

这是我的 server.js 文件。我正在尝试使用 native nodejs(没有 lib)编写文件上传。每次我尝试上传文件时,都会抛出一个奇怪的错误。这是一台 Linux 机器。

{ [错误:ENOENT,打开 '/uploads/lol.txt'] errno:-2,代码:'ENOENT',路径:'/uploads/lol.txt' }

/uploads/lol.txt 是目标路径。需要认真的帮助。

var http = require('http'),
    fs = require('fs');
    //qs = require('querystring');
var port = 9000, server, data;

data = fs.readFileSync('index.html');

server = http.createServer(function(req , res) {
  switch(req.url) {
    case "/":
        __serverResponse(res);
        break;
    case "/upload":
        __handleUpload(req, res);
        break;
    default:
        __serverResponse(res);
        break;
  }
});

function __handleUpload(req, res) {
    var __bufferData = __contentLength = 0;

    req.on('data', function(chunk) {
      __bufferData += chunk;
    });
    req.on('end', function() {
      //write contents to a file
      fs.writeFile('/uploads/lol.txt', __bufferData, function(err) {
        if (err)
          return console.log(err);
    });

    //end response with 200 OK
    //Modularize __serverResponse code
    res.end();
  });   
}

function __serverResponse(res) {
  res.writeHead(200, "OK", {'Content-Type': 'text/html'});
  res.write(data);
  res.end();
}

function startServer() {
  server.listen(port, function() {
    console.log('Server listening at port '+ port);
  });
}

function closeServer() {
  server.close();
}

module.exports = {
  start: startServer,
  end: closeServer
};

This is the HTML file:
<!DOCTYPE html>
<html>
    <head>
        <title>File Upload program</title>
    </head>
    <body>
        <form id="simple-form" action='/upload' method='POST'>
            <label for='file-input'> Select file </label>
            <input type='file' id='file-input' name='file-name'/>
            <input type='submit'/>
        </form>
    </body>
</html>

最佳答案

/uploads/lol.txt 是绝对文件路径。尝试只使用 uploads/lol.txt 使其相对于您的应用程序的根目录。

关于javascript - nodejs 在文件上传时抛出 ENOENT 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31665794/

相关文章:

java - 用 Java 发送文件的 REST 端点

javascript - 我如何从 json 获取值并在 javascript 中显示它们

javascript - 菜单打开时如何展开DIV

javascript - 过滤对象数组返回空数组

javascript - webkit 浏览器中的全屏 API

mysql - 多个控制字段在 Node.js 应用程序中不起作用

javascript - 为什么服务器回调会被多次触发

node.js - Heroku Nodejs 上的 Google Actions API Webhook 响应

php - 如何从另一台服务器获取文件并在 PHP 中重命名

c# - 如何上传大于 25 mb 的视频 - C#、JavaScript