upload.js
var
express =
require(
'express');
var
app =
express();
var
fs =
require(
'fs');
//用于解析数据
var
bodyParser =
require(
'body-parser');
//上传文件中间件
var
multer =
require(
'multer');
app.
use(
express.
static(
'static'));
app.
use(
bodyParser.
urlencoded({
extended:
false}));
app.
use(
multer({
dest:
'/tmp/'}).
array(
'image'));
app.
get(
'/upload.html',
function(
req,
res){
res.
sendFile(
__dirname +
'/' +
"upload.html")
})
app.
post(
'/upload',
function(
req,
res){
console.
log(
req.
files[
0]);
//上传的文件信息
//文件名
var
des_file =
__dirname +
"/" +
req.
files[
0].
originalname;
fs.
readFile(
req.
files[
0].
path,
function(
err,
data){
fs.
writeFile(
des_file,
data,
function(
err){
if(
err){
console.
log(
err)
}
else{
response ={
message:
'File uploaded successfully',
filename:req.
files[
0].
originalname
}
//获取临时路径
var
tmp_path =
req.
files[
0].
originalname;
//指定文件上传之后的存储目录
var
target_path =
'D:/my/node/static/images/'+
req.
files[
0].
originalname;
//移动文件到你想上传的目录
fs.
rename(
tmp_path,
target_path,
function(
err){
if(
err){
//抛出异常
console.
log(
err)
}
else{
console.
log(
'移动成功')
}
})
}
console.
log(
response);
res.
end(
JSON.
stringify(
response))
})
})
})
var
server =
app.
listen(
8082,
function(
req,
res){
var
host =
server.
address().
address;
var
port =
server.
address().
port;
console.
log(
'running at http://%s:%s',
host,
port)
})
upload.html
<html>
<head>
<title>文件上传
</title>
</head>
<body>
<h3>文件上传:
</h3>
选择一个文件上传:
<br/>
<!-- application/x-www-form-urlencoded 在发送前编码所有字符(默认)
multipart/form-data 不对字符编码。 在使用包含文件上传控件的表单时,必须使用该值。
text/plain 空格转换为 "+" 加号,但不对特殊字符编码。 -->
<form
action=
"/upload"
method=
"post"
enctype=
"multipart/form-data"
>
<input
type=
"file"
name=
"image"
>
<br />
<input
type=
"submit"
value=
"上传"
/>
</form>
</body>
</html>
教程上只给了上传的功能,自己加上了定义目录的功能,这个是单个图片上传,多个的话需要循环一下。