通过 `formidable` 模块上传的图片为什么在服务器上找不到对应的文件◔ ‸◔?

Rachel
  • 361

相关代码:

var querystring = require('querystring'),
  fs = require('fs'),
  formidable = require('formidable');

function start(response) {
  console.log('Request handler "start" was called.');
  var body = '<html>' +
    '<head>' +
    '<meta http-equiv="Content-Type" content="text/html; ' +
    'charset=UTF-8" />' +
    '</head>' +
    '<body>' +
    '<form action="/upload" enctype="multipart/form-data" method="post">' +
    '<input type="file" name="upload">' +
    '<input type="submit" value="Upload file" />' +
    '</form>' +
    '</body>' +
    '</html>';

  response.writeHead(200, {
    'Content-Type': 'text/html'
  });
  response.write(body);
  response.end();

}

function upload(response, request) {
  console.log('Request handler "upload" was called.');
  var form = new formidable.IncomingForm();
  console.log('about to parse');
  form.parse(request, function (error, fields, files) {
    console.log('parsing done');
    fs.renameSync(files.upload.path, '/tmp/test.png');
    // 返回 upload 处理程序的处理结果。
    response.writeHead(200, {
      'Content-Type': 'text/html'
    });
    response.write('received image:<br/>');
    response.write('<img src="/show">')
    response.end();
  });

}

function show(response) {
  console.log('Request handler "show" was called.');
  fs.readFile('/tmp/test.png', 'binary', function (error, file) {
    if (error) {
      response.writeHead(500, {
        'Content-Type': 'text/plain'
      });
      response.write(error + '\n');
      response.end();
    } else {
      response.writeHead(200, {
        'Content-Type': 'image/png'
      });
      response.write(file, 'binary');
      response.end();
    }
  })
}
exports.start = start;
exports.upload = upload;
exports.show = show;

上传之后,可以在浏览器中看到。但是通过 root 帐号通过 SSH 在服务器上却看不到上传的文件。

回复
阅读 1.7k
宣传栏