Firebase Multer的req.body和req.file在Multiform Uploads中为Empty

时间:2018-03-27 06:05:28

标签: node.js firebase multer firebase-hosting

  

当我在本地:8000服务器上运行这些东西时没有问题。

我正在使用firebase托管,其中我已经由nodejs express app部署。当我从客户端提交多部分表单时,它会给我空的req.body和req.file。我正在使用multer来处理多种数据。

app.post('/' ,  multer({ dest: os.tmpdir() , limits : { fileSize : 5242880 } }).single('image_file'),  (req , res)=>{

    console.log("req.body : " , req.body) ;
    console.log("req.file  : " , req.file) ; 

如何解决这个问题?为什么会这样? 我试过给#34; {dest:" data /" }"其中存在名为data的文件夹。但这似乎也不起作用

这是我在客户端的代码: -

<form method="post" action="/sendnotification" encType="multipart/form-data">     
<--SOME FORM ELEMENTS-->
</form>
$("form").on('submit' , e=>{
e.preventDefault() ;
$('button[type=submit]').hide() ;
$("#loader_circle").removeAttr("hidden") ; 

postdata = new FormData() ; 

$('form').serializeArray().map(ele=> { if(ele.name!='topic') postdata.append(ele.name , ele.value) }) ; 

topicslist = [] ; 
$("input:checkbox[name=topic]:checked").each(function(){
    topicslist.push($(this).val());
});
postdata.append('topic' , topicslist) ; 



postdata.append('image_file',  document.getElementById('file_image').files[0] ) ; 
console.log(postdata.entries()) ; 

$.ajax({url : '/sendnotification' , 
        type: "post" , 
        method:'post' , 
        cache: false , 
        contentType:false , 
        data : postdata ,
        processData:false, 
        success:  (data , status , jqxhr_obj)=>{
        if(data.success)
        {
            console.log('success') ;
            $('#successalert').html(`<h3 class="text-center">${data.success}</h3>`)
            $('#successalert').replaceWith($("#successalert").clone().removeAttr('hidden')) ; 
            document.querySelector("form").reset() ; 
            fadeElementAfter("#successalert" , 5000) ; 
        }
        else{
            console.log('error') ; 
            $('#erroralert').html(`<h3 class="text-center">${data.error}</h3>`)
            $('#erroralert').replaceWith($("#erroralert").clone().removeAttr('hidden')) ; 
            fadeElementAfter("#erroralert" , 4000) ; 
        }

        $('button[type=submit]').show() ; 

        $("#loader_circle").attr('hidden' , true) ; 
    } , 


    error : (jqXHR, textStatus, errorThrown )=>{
            console.log(jqXHR , textStatus , errorThrown) ; 
            $('#erroralert').html(`<h3 class="text-center">${data.error}</h3>`)
            $('#erroralert').replaceWith($("#erroralert").clone().removeAttr('hidden')) ; 
            fadeElementAfter("#erroralert" , 4000) ; 
    }

}) ; 



})

0 个答案:

没有答案