【发布时间】:2018-11-13 19:33:19
【问题描述】:
我正在尝试将 .mp3 文件上传到我本地的节点服务器。为此,我采用了 2 种方法:
- 使用 uploadit.js 作为一个单独的文件 - 在此,
http.createServer(function(req, res){
if(req.url == "/fileupload"){
var form = new formidable.IncomingForm();
form.parse(req, function(err, fields, files){
var oldpath = files.filetoupload.path;
var newpath = './audio/audio.mp3';
fs.readFile(oldpath, function(err, data){
if(err) throw err;
fs.writeFile(newpath, data, function(err){
if(err) throw err;
res.write('<center>File uplaoded and saved</center>');
res.end();
});
fs.unlink(oldpath, function(err){
if(err) throw err;
});
});
});
}
else{
res.writeHead(200, {'Content-Type': 'text/html'});
res.write('<div><form action="fileupload" method="post" enctype="multipart/form-data">');
res.write('<input type="file" name="filetoupload"><br>');
res.write('<input type="submit" >');
res.write('</form></div>');
return res.end();
}
}).listen(4200);
它在 4200 端口启动应用程序并且可用。
- 在方法 2 中,我试图避免创建新端口(因为在像 Heroku 这样的环境中启动时无法访问该端口)。所以我尝试在下载文件内容时将代码集成到另一个文件中
var express = require('express');
var app = express();
var server = require('http').Server(app);
var fs = require('fs');
var io = require('socket.io')(server);
var ss = require('socket.io-stream');
app.use(express.static(`${__dirname}/html`));
server.listen('5001');
app.get('/uploadform', function (req, res) {
if(req.url == "/fileupload"){
var form = new formidable.IncomingForm();
form.parse(req, function(err, fields, files){
var oldpath = files.filetoupload.path;
var newpath = './audio/audio.mp3';
fs.readFile(oldpath, function(err, data){
if(err) throw err;
fs.writeFile(newpath, data, function(err){
if(err) throw err;
res.writeHead(200, {'Content-Type': 'text/html'});
res.write('<center>File uplaoded and saved</center>');
res.end();
});
fs.unlink(oldpath, function(err){
if(err) throw err;
});
});
});
}
else{
res.writeHead(200, {'Content-Type': 'text/html'});
res.write('<div'>
res.write('<form action="fileupload" method="post" enctype="multipart/form-data">');
res.write('<input type="file" name="filetoupload"><br>');
res.write('<input type="submit"');
res.write('</form></div>');
return res.end();
}
});
在这里,当我选择文件并点击提交按钮时,它会将我带到一个带有 404 状态的错误页面,如下所示:
尝试了我已知的可能方法,但仍然需要有关如何解决此问题并顺利上传文件的帮助。
提前致谢。
【问题讨论】:
-
您在 express 中的处理程序是
GET,而不是POST。我会检查你的动词。 -
老实说,我认为您应该花一些时间了解 express 的基础知识
-
@ZadikiHassanOchola 同意!这样做
标签: javascript node.js express file-upload http-post