上传图片文件到服务器node.js express axios

Posted

技术标签:

【中文标题】上传图片文件到服务器node.js express axios【英文标题】:Upload image file to server node.js express axios 【发布时间】:2018-05-17 18:38:24 【问题描述】:

我一直在尝试上传图像文件并将其保存到我的后端。我正在使用 axios 从反应前端调用 express API。

前端在端口 3000 上运行 后端运行端口 8080

export function updateSociete(data)
return dispatch => 
    // Init loading...
    dispatch(setLoading()) 

    console.log(data) // File data is populated
    axios.post(`$API_ENDPOINTapi/societe/update`, 
         
            data: data,
        ,
         headers: 
            'Content-Type': 'Application/json',
            'x-access-token': localStorage.getItem('token')
        
    )
    .then(function (response)   
        return response.data
    ) 
    .then( societe => 
        // do something
    )

还有快递后台

router.post('/update', (req, res, next) => 
    var data = req.body;

    console.log(data) // No file data here 

如果我尝试将标头设置为 multipart/form-data,我仍然有空数据。当axios向后端发送数据对象时发生了一些事情,后端接收到正常的数据期望文件数据。

使用邮递员进行测试时,我收到所有数据文件等。

【问题讨论】:

【参考方案1】:

你可以把它转换成formData。

你可以试试下一个:

export function updateSociete(data)  
 return dispatch =>   
 // Init loading...  
 dispatch(setLoading())   

 console.log(data) // File data is populated
 const formData = new FormData(data) 
 axios.post(`$API_ENDPOINTapi/societe/update`, 
     
        data: formData,
    ,
     headers: 
        'Content-Type': 'Application/json',
        'x-access-token': localStorage.getItem('token')
    
 )
 .then(function (response)   
    return response.data
 ) 
 .then( societe => 
    // do something
 )

P.S:确保你有这个<form onSubmit=you upload function logic> .... </form>

在Using_FormData_Objects 了解更多

【讨论】:

现在,我只是将文件转换为base64,然后将其发送到DB。 太棒了!但这会将图像存储在服务器本身! 图片还应该存放在哪里?

以上是关于上传图片文件到服务器node.js express axios的主要内容,如果未能解决你的问题,请参考以下文章

在 Express Node js 中使用 multer sftp 将文件上传到远程服务器?

node.js(express)中使用Jcrop进行图片裁切上传

node.js(express)中使用Jcrop进行图片裁切上传

node.js框架express文件上传操作

node.js - 安全的图像文件上传

使用Node.js开发一个简单的图片服务器