Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 上传mp3文件并在node.js中播放上传的文件_Javascript_Html_Node.js - Fatal编程技术网

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

Javascript 上传mp3文件并在node.js中播放上传的文件,javascript,html,node.js,Javascript,Html,Node.js,我正试图上传一些文件,通过一个HTML表单,在我的本地驱动器,我能够成功地完成。然而,当试图播放mp3上传文件时,通过访问“mp3播放器”的url,服务器会将我重定向到上传页面,我无法理解为什么会发生这种情况。说到node.js,我是个乞丐,我对JavaScript知之甚少,因为我对它几乎没有经验。您可以检查以下代码: var http = require('http'), fs = require('fs'), filePath = './test.mp3', stat = fs.statSy

我正试图上传一些文件,通过一个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)
var http=require('http'),
fs=需要('fs'),
文件路径='./test.mp3',
stat=fs.statSync(文件路径);
var Required=要求(“Required”);
createServer(函数(请求、响应){
//createReadStream(filePath).pipe(响应);
如果(request.url='/playUploadedFile'){
createReadStream(filePath).pipe(响应);
书面答复(200{
“内容类型”:“音频/mpeg”,
“内容长度”:stat.size,
});
}
如果(request.url='/fileupload'){
var form=new.IncomingForm();
解析(请求、函数(错误、字段、文件){
var oldpath=files.filetoupload.path;
var newpath=uuu dirname+'/'+files.filetoupload.name;
filePath=newpath;
log(文件路径);
fs.rename(旧路径、新路径、函数(err){
如果(错误)抛出错误;
write('File upload and moved!');
//request.url='/playUploadedFile';
response.end();
});
});
}否则{
writeHead(200,{'Content-Type':'text/html'});
回答。写(“”);
响应。写入(“
”); 回答。写(“”); 回答。写(“”); 返回响应。end(); } }).听(8080)
为了提供静态文件,您必须将上载路径声明为static。此方式节点了解指定路径中的文件需要以完全相同的方式提供服务。最简单的方法是使用express。但您也可以使用节点静态包

您正在点击第二个if语句else块,将ifs组合成if-“else-if”-else块谢谢,使用static express解决了我的问题。其他方法可能也很好,但这似乎是最简单的方法。