標籤:function cti form headers tip send ret javascrip 方法
前端js部分
changeEvent (e) { ------ //change事件方法 let oFile = e.target.files[0] ------ //擷取檔案對象 let param = new FormData() ------ //new一個formData param.append(‘file‘, oFile, oFile.name) ------ //將檔案添加到formdata中 param.append(‘chunk‘, ‘0‘) let config = { headers: {‘Content-Type‘: ‘multipart/form-data‘} } this.axios.post(‘/api/upload/upavatar?username=‘ + username, param, config) ------//傳輸資料 .then(response => { if (response.data.data === 1) { ------ //成功後的回掉 let instance = Toast({ message: ‘頭像更改成功‘ }) setTimeout(() => { instance.close() }, 1000) } })}
NodeJS部分需要引入formidable、path模組
router.post(‘/upavatar‘, function (req, res, next) { var form = new formidable.IncomingForm() form.uploadDir = path.normalize(__dirname + ‘/../public/images/avatar‘) ------圖片上傳目錄 form.parse(req, function (err, fields, files) { var oldpath = files.file.path var newpath = path.normalize(__dirname + ‘/../public/images/avatar‘) + ‘\\‘ + req.query.username + ‘.png‘ -------//給上傳的圖片重新命名 fs.rename(oldpath, newpath, function (err) { if (err) { res.send(‘-1‘) return } if (newpath) { let avatarPath = ‘server/public/images/avatar/‘ + req.query.username + ‘.png‘ ------//存入資料庫的圖片地址(相對於頁面) db.updateMany(‘users‘, {‘username‘: req.query.username}, {$set: {avatar: avatarPath}}, function (err, result) { ------//更新資料庫的頭像地址 if (err) { res.send(‘-2‘) return } res.json({data: 1}) }) } }) })})
NodeJS+axios上傳圖片