【发布时间】:2014-05-16 02:39:17
【问题描述】:
不知道我做错了什么......
我有一个节点 js 网络服务器,它应该从 ajax 帖子将 mp3 文件保存到磁盘。该帖子包含一个 mp3 文件,该文件由浏览器中的 recorder.js 创建的 wav 文件构成。
在我的 requestHandler 中,我有以下代码:
var
formidable = require('formidable'),
http = require('http'),
path = require('path'),
fs = require('fs');
function requestHandler(req, res) {
var requestPath = path.basename(req.url) || 'index.html',
ext = path.extname(requestPath),
localFolder = __dirname + '/public/',
uploadFolder = __dirname + '/uploads/';
if(requestPath === 'uploadmp3' && req.method === 'POST') {
var form = new formidable.IncomingForm();
form.parse(req, function(err, fields, files) {
if(err) {
console.error(err.message);
return;
}
var mp3File = uploadFolder + fields.fname;
var base64File = new Buffer(fields.data, 'binary').toString('base64');
var decodedFile = new Buffer(base64File, 'base64').toString('binary');
fs.writeFileSync(mp3File, decodedFile, 'base64', function(err){
if(err) {
return console.log(err);
}
console.log('written to disk: ' + mp3File);
});
res.writeHead(200, {'Content-Type:' : 'text/plain'});
res.write(mp3File+ ' \n\n');
res.end('\n');
});
return;
}
}
结果是我将文件保存到磁盘,但虽然大小正确,但时间设置不正确,播放持续一秒钟。
我可以毫无问题地用 php 保存它... mp3 文件播放完美,但我真的需要它才能在节点 js 上工作。
【问题讨论】:
标签: javascript jquery ajax node.js mp3