最近用了electron,内部需要实现一个下载,后来查询资料等发现实现方式和node是一样的(electron可以使用node的api)
import os from 'os'
import fs from 'fs'
import path from 'path'
import http from 'http'
import https from 'https'
//此处promise是因为业务需要,可以删除
downLoadFile(url, name) {
return new Promise((resolve, reject) => {
const homeDir = os.homedir() //获取用户主目录地址
const filename = path.join(homeDir, `/${name}`) //组装文件存放地址
const file = fs.createWriteStream(filename) //生成一个写入文件的流
let httpType
if (url.split('://')[0] === 'http') { //判断是什么类型的请求
httpType = http
} else {
httpType = https
}
httpType.get(url, response => {
response.pipe(file) //将文件流写入
response.on('end', () => {
resolve(filename)
})
response.on('error', err => {
reject(err)
})
})
})
}