node中multer模块配合ajax实现文件上传

前端页面:

<body>
    <h2>预览图片</h2>
    <img src="" id="ac">
    <form method="post" enctype="multipart/form-data">
    <input type="file" id="file">
    <br/>
    </form>
    <input type="button" value="上传" style="margin-top: 10px;" id="btn"> 
</body>

前端JavaScript代码:

<script>
    //创建FormData对象
    var filedate=new FormData();
    var file=document.getElementById("file")
    var btn=document.getElementById("btn")
    var ac=document.getElementById("ac")
    //预览图片处理
    file.onchange=function(){
        var afile=file.files[0]
        console.log(afile)
    //重点
    var httpUrl=window.webkitURL.createObjectURL(afile)
    ac.setAttribute("src",httpUrl)
    }
    btn.onclick=function(){
        //创建formdata对象 将file文件追加到formdata对象中
        filedate.append("fileaa",afile)
        var xhr=new XMLHttpRequest();
        xhr.open('post','http://127.0.0.1:1234/ajax')
		//post文件上传不需要设置响应头
        // xhr.setRequestHeader('content-type','application/x-www-form-urlencoded')
        //向后端发送数据
        xhr.send(filedate)
    }
</script>

后端代码:

var express=require("express")
var fs=require("fs");
var multer=require("multer")
//初始化express框架
var app=express()
//初始化multer上传对象
var upload=multer({dest:'./file/'})

//配置路由
app.get('/',function(request,response){
        response.redirect("/fileajax")
})
app.get('/fileajax',function(request,response){
        fs.readFile('fileajax.html','utf8',function(error,data){
            if(error){
                console.log("读取html文件失败")
                return
            }
            response.send(data.toString())
        })
})
//处理ajaxpost请求
app.post('/ajax',upload.single("fileaa"),function(request,response){
            console.log(request.file)
            var OldPath=request.file.destination+"/"+request.file.filename;
        var NewPath=request.file.destination+"/"+request.file.filename+request.file.originalname;
        fs.rename(OldPath,NewPath,function(){
            console.log("重命名成功")
        })

})
app.listen(1234,function(){
    console.log("服务器已启动")
})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值