nodeJs(express)文件上传配置

用node作为服务器端,在需要上传文件到后台时,后台需要相应配置
简单配置如下:
1、安装multer依赖:npm install multer --save
渣渣前台的渣渣后台技术有限,不是自己配置的node服务器,使用的是webstorm自带的创建express项目,
普通配置都齐全了,只需要新增
2、配置:
app.js:
引入multer
var multer = require(“multer”);
再创建一个multerObject设置保存参数
// static 为自定义保存的路径,没有会自动创建文件夹
var multerObj = multer({ dest: “./static” });
nodeJs(express)文件上传配置_第1张图片
在一定位置(之前试过在靠前的位置,但是不行,后来放在app.use(express.static(path.join(__dirname, ‘public’)));之后)写入
// 有single、array()、fields(),不过我个人觉得用any()方便
(更多更高级的配置请自行百度吧…我也是百度来的,只是短时间内两次使用竟然都不知道怎么配置甚至不知道要配置,只好找个地方写下来了)
app.use(multerObj.any());
nodeJs(express)文件上传配置_第2张图片
这里加入上面一行app.use(express.static(path.join(__dirname, ‘static’)));
是为了能够在本地浏览器输入网址直接访问本静态文件夹(如,我的服务器配置端口是3000,加入现在我有一张图片在static或public中,在服务器开启的情况下,直接在浏览器中输入http://localhost:3000/图片名就可以访问该张图片了)

配置完成,之后有图片上传上来就会直接添加到你设置的默认文件路径,不过需要注意的是:
保存的文件没有后缀名,也就是损坏的文件,需要手动更改,其实保存的路径是服务端收到的req.files[0].path,可以看到,根本就没有后缀名,只是随机生成了一个名字,解决方法:
利用fs对文件进行读写:

1、在用到文件上传的文件里引用fs模块,注意不能写进全局,不起作用的:
var fs = require(“fs”);
nodeJs(express)文件上传配置_第3张图片
2、在有文件操作的地方,用fs.rename(oldPath, newPath, callback)
用新的文件名覆盖旧文件就行了,oldPath取值可以直接为req.files[0].path,新文件newPath我一般是分离出文件名部分,取出文件的后缀名,然后再用文件名+当前时间+“.”+后缀名就生成文件名了,也不担心会重名了
好了,一个文件上传的配置啰啰嗦嗦的,不知道以后我能看懂不。。不过没关系,有关键词再加百度就可以完成了

你可能感兴趣的:(nodeJs笔记)