本文通过Node.js后端与前端Ajax结合的方式,演示了文件上传的完整流程。前端使用FormData构造请求,后端利用Formidable插件解析上传数据,并通过fs.rename实现文件重命名及路径移动,最终返回操作结果。
Node.js文件上传实现流程
以下展示一个Node.js环境下的文件上传示例,首先介绍前端部分的实现代码。
doUpload() {
var formData = new FormData($("#uploadForm")[0]);
$.ajax({
url: 'http://localhost:3011/upload',
type: 'POST',
data: formData,
async: false,
cache: false,
contentType: false,
processData: false,
success: function (returndata) {
alert(returndata);
},
error: function (returndata) {
// alert(returndata);
}
});
}
<form id="uploadForm">
<p>上传文件:
<input id="UpImage" type="file" name="file"/>
<input id="text" type="text" name="text" value="232323"/>
</p>
<input type="button" value="上传" onClick={this.doUpload.bind(this)}/>
<input type="button" onClick={()=>{this.submit()}} value="确定"/>
</form>
服务端处理逻辑依赖于formidable插件,使用前需确保已安装该依赖。
exports.upload = function (req,res,next) {
//keepExtensions为true时,显示文件扩展名
var form = new formidable.IncomingForm({keepExtensions:true});
//指定文件目录
form.uploadDir = path.join(__dirname);
form.parse(req,function (err,fields,files) {
//fields存放的为json数据
//files存放的是文件信息
//更改文件目录,并且显示上传之前的名字
fs.rename(files.file.path,__dirname+'/'+files.file.name,function (a,b) {
});
res.json({success:'修改成功'})
});
};
以上内容即为本文的全部分享,旨在为读者的学习提供辅助,同时也期待大家能继续支持本站。