여기에 문제가 있습니다.
API가있는 것부터 시작하겠습니다.이 API는 다음 헤더와 함께 데이터를 반환합니다.
Content-Type image/png
Transfer-Encoding chunked
Connection keep-alive
그리고 파일 만있는 응답 본문.
이 본문 데이터를 파일에 쓰려고 할 때 항상 손상됩니다. 이진 데이터, 그의 MIME, body.length가 원본 파일 크기와 일치하지만이 이미지를 저장 한 후에는 뷰어에서 열 수 없음을 의미합니다.
내가하는 일 :
public userFile(req, res: Response) {
const data = {
fileId: parseInt(req.body.fileId),
};
let params = {
headers: {
'Authorization': keys.token,
},
};
axios.post('/api/getfile/', data, params,)
.then((response: AxiosResponse) => {
const fs = require('fs');
const dir = require('path').resolve(__dirname + '../../../files/storage');
const ext = {
'image/png': '.png'
};
fs.writeFile(dir + '/' + img + ext[response.headers['content-type']], response.data, (er) => {
res.send(response.data);
});
})
.catch((err) => {
logger.error("AXIOS ERROR: ", err)
})
}
그러나! 우편 배달부와이 파일을 받으면 ... 여기 있습니다! 그래서, 당신의 도움이 필요합니다-내가 뭘 잘못 했나요?
매개 변수에있는 응답 유형을 구체적으로 선언해야합니다.
responseType: 'stream'
그런 다음 파이프를 사용하여 스트림을 파일에 저장하십시오.
response.data.pipe(fs.createWriteStream("/dir/xyz.png"))
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다