学node的一点小笔记(十二) node+express上传文件,自定义路径

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>


教程上只给了上传的功能,自己加上了定义目录的功能,这个是单个图片上传,多个的话需要循环一下。

猜你喜欢

转载自blog.csdn.net/qq_37628661/article/details/79805775