上载mp3文件并在node.js中播放上载的文件

时间:2019-04-27 20:26:24

标签: javascript html node.js

我正在尝试通过HTML表单将一些文件上传到本地驱动器中,并能够成功完成。但是,当尝试播放mp3上传的文件时,通过访问“ mp3播放器”的url,服务器将我重定向到上传页面,我无法理解为什么会发生这种情况。当涉及到node.js时,我是一个初学者,而我对JavaScript的了解并不多,因为我对此经验不足。您可以检查以下代码:

var http = require('http'),
fs = require('fs'),
filePath = './test.mp3',
stat = fs.statSync(filePath);
var formidable = require('formidable');

http.createServer(function(request, response) {
  //fs.createReadStream(filePath).pipe(response);

  if(request.url == '/playUploadedFile') {
    fs.createReadStream(filePath).pipe(response);
    response.writeHead(200, {
        'Content-Type': 'audio/mpeg',
        'Content-Length': stat.size,
    });
  }

  if (request.url == '/fileupload') {
    var form = new formidable.IncomingForm();
    form.parse(request, function (err, fields, files) {
      var oldpath = files.filetoupload.path;
      var newpath = __dirname + '/' + files.filetoupload.name;
      filePath = newpath;
      console.log(filePath);
      fs.rename(oldpath, newpath, function (err) {
        if (err) throw err;
        response.write('File uploaded and moved!');
        //request.url = '/playUploadedFile';
        response.end();
      });
 });
  } else {
    response.writeHead(200, {'Content-Type': 'text/html'});
    response.write('<form action="fileupload" method="post" enctype="multipart/form-data">');
    response.write('<input type="file" name="filetoupload"><br>');
    response.write('<input type="submit">');
    response.write('</form>');
    return response.end();
  }

}).listen(8080)

1 个答案:

答案 0 :(得分:-1)

为了提供静态文件,您必须声明您的静态上传路径。通过这种方式,节点了解指定路径中的文件需要按其原样提供服务。最简单的方法是使用快速https://expressjs.com/en/starter/static-files.html。但是,您也可以使用节点静态https://www.npmjs.com/package/node-static软件包。