記nodejs 下載圖片內容為空,大小是0kb的問題解決方案
阿新 • • 發佈:2018-12-12
今天在下載圖片的時候發現什麼方法都嘗試瞭然後一直都是無內容, 最後面我改變一下createWriteStream路徑到上一層目錄就可以正常寫入圖片, 由於我是用pm2啟動的服務然後又開啟了watch 所以在我往目錄裡面寫檔案的時候pm2就會檢測改動,所以寫入圖片的的操作就會被重新整理.關閉watch解決問題
附上我的程式碼解除安裝圖片並根據日期建立目錄
const downImageFile = async ({ media_id, appid }) => {
return new Promise(async (resolve) => {
if (fsExistsSync (imgPath)) {
let src = await writePic({ media_id, appid })
resolve(src)
} else {
fs.mkdir(imgPath, async (err) => {
if (err) return console.error(err);
let src = await writePic({ media_id, appid })
resolve (src)
})
}
})
}
const writePic = ({ media_id, appid }) => {
return new Promise(resolve => {
let imgPath = path.join(__dirname, `../public/images/${moment().format('YYYY-MM-DD')}`);
let imgUrl = `${uuidv1()}.jpeg`;
const access_token = await SaveToken ({ appid });
let stream = fs.createWriteStream(`${imgPath}/${imgUrl}`);
let result = request(`https://api.weixin.qq.com/cgi-bin/media/get?access_token=${access_token}&media_id=${media_id}`);
request.get(`https://api.weixin.qq.com/cgi-bin/media/get?access_token=${access_token}&media_id=${media_id}`)
.pipe(stream)
.on('close', function () {
console.log('圖片下載成功')
});
})
}
不懂的就留言吧