var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var session = require('express-session'); var multer = require('multer'); var fs = require("fs"); import express from "express"; import path from "path"; import { getFileList, getFilePath, getFolderList, getCurFolderPath} from "./Server"; import { createFolder, removeFolder, removeFiles, joinFile } from "./file"; var app = express(); app.engine( '.html', require('ejs').renderFile ); // 注册html模板引擎 app.set('views', path.join(__dirname, '../web/views')); app.set('view engine', 'html'); app.set('view options', { filename: "views" }); // app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use(cookieParser("admin")); app.use(session()); app.use(express.static(path.join(__dirname, '../web/views'))); // app.get('/',function(req,res){ // res.render('index',{helloWorld: 'hello,world'}); // }) app.post('/readFolder',(req,res)=>{ console.log(req.body); }) app.get('/folderList',(req,res)=>{ let result = getFolderList(); console.log('我是服务器拿到的1:result',result); res.send(result); }) app.get("/fileList",(req,res)=>{ let result = getFileList(req.query.folderName); console.log('获取fileList:', req.query,result); res.send(result); }) app.get("/create",(req,res)=>{ // let filepath = path.resolve(getFilePath(),req.query.folderName); // let filepath = `${getFilePath()}/${req.query.folderName}`; let filepath = joinFile(getFilePath(),req.query.folderName) console.log("create", filepath) let result = createFolder(filepath); res.send(result); }) app.get("/deleteFolder",(req,res)=>{ // let filepath = path.resolve(getFilePath(),req.query.folderName); let filepath = joinFile(getFilePath(),req.query.folderName) console.log("delete folder:", filepath) removeFolder(filepath); res.send(true); }) app.get("/download",(req,res)=>{ let fileName = req.query.fileName; let folderName = req.query.folderName; let curpath = folderName+"/"+fileName; let currFile = `${getFilePath()}/${curpath}` let fReadStream; fs.exists(currFile,function(exist) { if(exist){ res.set({ "Content-type":"application/octet-stream", "Content-Disposition":"attachment;filename="+encodeURI(fileName) }); fReadStream = fs.createReadStream(currFile); fReadStream.on("data",(chunk) => res.write(chunk,"binary")); fReadStream.on("end",function () { res.end(); }); }else{ res.set("Content-type","text/html"); res.send("file not exist!"); res.end(); } }); }) var storage = multer.diskStorage({ destination: function (req, file, callback) { let toPath = getCurFolderPath(); callback(null,toPath); }, filename: function (req, file, callback) { callback(null,file.originalname); } }); var upload = multer({ storage: storage }); app.post("/upload",upload.single('avatar'),(req,res,next)=>{ res.setHeader("Access-Control-Allow-Origin", "*"); res.setHeader("Access-Control-Allow-Methods", "POST, GET"); // res.setHeader("Access-Control-Allow-Credentials",true); // res.setHeader("Access-Control-Allow-Headers", "Content-Type"); // res.setHeader("Access-Control-Allow-Headers", "application/octet-stream"); if(req.file){ res.send({result:true}) }else{ res.send({result:false}) } }) app.post("/deleteFiles",(req,res,next)=>{ let folderName = req.body.folderName? joinFile(getFilePath(),req.body.folderName):getFilePath(); let fileNames = req.body.fileNames; removeFiles(folderName,fileNames) res.send(true); }) app.use(function(req, res, next) { var err:any = new Error('Not Found'); err.status = 404; next(err); }); // error handler app.use(function(err, req, res, next) { // set locals, only providing error in development res.locals.message = err.message; res.locals.error = req.app.get('env') === 'development' ? err : {}; // render the error page res.status(err.status || 500); res.render('error'); }); // export function getFileList(){ // let p = path.dirname(require.main.filename); // console.log(".....",dirname) // } export default app;