const http = require('http')
const url = require('url')
const fs = require('fs')
const path = require('path')
function getQueryObj(query) {
const queryObj = {}
if (query.length) {
const queryArr = query.split('&')
queryArr.forEach((e, i) => {
let oneQuery = e.split('=')
let key = oneQuery[0]
let value = oneQuery[1]
queryObj[key] = value
})
}
return queryObj
}
const server = http.createServer((req, res) => {
const { pathname, query } = url.parse(req.url);
const urlParser = url.parse(req.url)
if(pathname === '/download') {
const queryObj = getQueryObj(query)
if ('filename' in queryObj && queryObj['filename']) {
const filename = queryObj['filename']
let filepath = path.resolve(__dirname, './static', decodeURIComponent(filename))
console.log(filepath)
fs.readFile(filepath, (err, data) => {
if(err) {
res.end(err)
return
}
res.writeHead(200, {
'content-disposition': 'attachment; filename=' + filename,
'content-type': 'application/octet-stream',
'Access-Control-Expose-Headers': 'content-disposition'
'access-control-allow-origin': '*',
'access-control-allow-headers': 'X-Requested-With',
'access-control-allow-methods': 'PUT,POST,GET,DELETE,OPTIONS'
})
fs.createReadStream(filepath).pipe(res)
})
}
}
})
server.listen(8086, (err) => {
if (!err) {
console.log('服务已启动')
}
})