错误:ENOENT,没有这样的文件或目录节点JS

时间:2022-11-11 15:28:15

I am trying to upoad and download images to the server via Node.js and I am using the below code:

我正在尝试使用upoad,并通过Node将图片下载到服务器。我和js使用以下代码:

var http = require('http'),
    path = require('path'),
    os = require('os'),
    fs= require('fs'),url = require('url');

var Busboy = require('busboy');

http.createServer(function(req, res) {
  if (req.method === 'POST') {
    var busboy = new Busboy({ headers: req.headers });
    busboy.on('file', function(fieldname, file, filename, encoding, mimetype) {
      var saveTo = ".\\Images\\"+filename;
      file.pipe(fs.createWriteStream(saveTo));
    });
    busboy.on('finish', function() {
      res.writeHead(200, { 'Connection': 'close' });
      res.end("That's all folks!");
    });
    return req.pipe(busboy);
  }
 else{
    var request = url.parse(req.url, true);
    console.log(request);
    var action = request.pathname;
    console.log(action);
     if (action !== '/') {
         var img = fs.readFileSync('.'+action);
        res.writeHead(200, {'Content-Type': 'image/gif' });
        res.end(img, 'binary');
     } else { 
        res.writeHead(200, {'Content-Type': 'text/plain' });
        res.end('Hello World \n');
     }
  }
  res.writeHead(404);
  res.end();
}).listen(8082, function() {
  console.log('Listening for requests');
});

When I try to get the image from this server using HTTP GET at http://localhost:8082/images/betty.jpg, the request is fulfilled and the image is recieved but it also throws the error below:

当我在http://localhost:8082/images/betty.jpg上尝试使用HTTP get从该服务器获取图像时,请求被完成,图像被接收,但它也抛出以下错误:

             ^
fs.js:438
  return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
                 ^
Error: ENOENT, no such file or directory 'D:\ImageUploadService\favicon.ico'
    at Object.fs.openSync (fs.js:438:18)
    at Object.fs.readFileSync (fs.js:289:15)
    at Server.<anonymous> (D:\ImageUploadService\service.js:27:20)
    at Server.emit (events.js:98:17)
    at HTTPParser.parser.onIncoming (http.js:2112:12)
    at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:121:23
)
    at Socket.socket.ondata (http.js:1970:22)
    at TCP.onread (net.js:527:27) 'D:\ImageUploadService\favicon.ico'
    at Object.fs.openSync (fs.js:438:18)
    at Object.fs.readFileSync (fs.js:289:15)
    at Server.<anonymous> (D:\ImageUploadService\service.js:27:20)
    at Server.emit (events.js:98:17)
    at HTTPParser.parser.onIncoming (http.js:2112:12)
    at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:121:23
)
    at Socket.socket.ondata (http.js:1970:22)
    at TCP.onread (net.js:527:27)

It seems that it is looking for some favicon.ico. What could be the problem??

它似乎在寻找一些有利的因素。有什么问题吗?

1 个解决方案

#1


7  

You need to check if the file exists with fs.existsSync(path) before attempting to read it:

您需要检查该文件是否与fs.existsSync(path)一起存在,然后尝试读取它:

 if (action !== '/' && fs.existsSync('.'+action)) {
    var img = fs.readFileSync('.'+action);
    res.writeHead(200, {'Content-Type': 'image/gif' });
    res.end(img, 'binary');
 } else {

#1


7  

You need to check if the file exists with fs.existsSync(path) before attempting to read it:

您需要检查该文件是否与fs.existsSync(path)一起存在,然后尝试读取它:

 if (action !== '/' && fs.existsSync('.'+action)) {
    var img = fs.readFileSync('.'+action);
    res.writeHead(200, {'Content-Type': 'image/gif' });
    res.end(img, 'binary');
 } else {