파일을 첨부하여 다른 서버로 저장 혹은 전송하려면
1. multer 나 2. express file upload 라이브러리를 활용할 수 있다.
초반에 buffer 때문에 삽질을 꽤 한 적이 있기에 따로 포스팅으로 그 과정을 기록한다.
html 예시
<form action="/send" method="post" enctype="multipart/form-data">
<input type="text" name="userName"><br/>
<input type="text" name="userAge"><br/>
<input type="file" name="userFile" multiple> // 파일을 여러 개 첨부하고 싶으면 multiple로 표시함.
<input type="submit">
</form>
js code 예시
const express = require("express");
const sendExample = express.Router();
const bodyParser = require("body-parser");
const axios = require('axios');
const fileUpload = require("express-fileupload");
const FormData = require('form-data')
sendExample.use(bodyParser.json());
sendExample.use(bodyParser.urlencoded({ extended: true }));
sendExample.post("/send", (req, res) => {
let formData = new FormData();
formData.append("userName", req.body.userName) // html input 태그의 name과 일치시킴.
formData.append("userAge", req.body.userAge) // html input 태그의 name과 일치시킴.
if (req.files) {
for (i = 0; i < req.files.userFile.length; i++) {
let file = req.files.userFile[i];
formData.append('userFile', file.data, {filename: file.name});
}
}
const send_option = {
method: "post",
url: 'form 정보를 보내고자 하는 url',
timeout: 1000, // 임의로 지정함.
headers: {
...formData.getHeaders()
},
data: formData, // 위에서 지정한 formData
}
axios(request_config)
.then(res => {
console.log('success');
})
.catch(err => {
console.log(err)
})
res.status(200).send()
});