Commit 763a58b2 by lixinming

no message

parent 8e421fec
[2021-12-23T15:42:43.868] [ERROR] errorLogger - errorInfo => 密码不正确 |
[2021-12-23T15:42:45.375] [ERROR] errorLogger - errorInfo => 密码不正确 |
[2021-12-23T15:42:45.764] [ERROR] errorLogger - errorInfo => 密码不正确 |
[2021-12-23T15:42:45.949] [ERROR] errorLogger - errorInfo => 密码不正确 |
[2021-12-23T15:42:46.126] [ERROR] errorLogger - errorInfo => 密码不正确 |
[2021-12-23T15:42:46.317] [ERROR] errorLogger - errorInfo => 密码不正确 |
[2021-12-23T15:42:46.500] [ERROR] errorLogger - errorInfo => 密码不正确 |
[2021-12-23T15:42:46.677] [ERROR] errorLogger - errorInfo => 密码不正确 |
[2021-12-23T15:42:46.852] [ERROR] errorLogger - errorInfo => 密码不正确 |
[2021-12-23T15:42:47.036] [ERROR] errorLogger - errorInfo => 密码不正确 |
[2021-12-23T15:42:47.212] [ERROR] errorLogger - errorInfo => 密码不正确 |
[2021-12-23T15:42:47.397] [ERROR] errorLogger - errorInfo => 密码不正确 |
[2021-12-23T15:09:35.009] [ERROR] errorLogger - errorInfo => 参数错误 loginId |
[2021-12-23T15:10:03.399] [ERROR] errorLogger - errorInfo => test |
[2021-12-23T15:16:51.510] [ERROR] errorLogger - errorInfo => test |
[2021-12-23T15:16:58.998] [ERROR] errorLogger - errorInfo => test |
[2021-12-23T15:22:58.188] [ERROR] errorLogger - errorInfo => test |
[2021-12-23T15:23:01.188] [ERROR] errorLogger - errorInfo => test |
[2021-12-23T15:24:36.037] [ERROR] errorLogger - errorInfo => test |
[2021-12-23T15:26:39.975] [ERROR] errorLogger - errorInfo => test |
[2021-12-23T15:33:39.247] [ERROR] errorLogger - errorInfo => test |
[2021-12-23T15:33:58.597] [ERROR] errorLogger - errorInfo => test |
[2021-12-23T15:34:04.885] [ERROR] errorLogger - errorInfo => test |
[2021-12-23T15:35:52.269] [ERROR] errorLogger - errorInfo => 参数错误 loginId |
[2021-12-23T15:38:34.972] [ERROR] errorLogger - errorInfo => test |
[2021-12-23T15:40:06.100] [ERROR] errorLogger - errorInfo => test |
[2021-12-23T14:49:48.318] [ERROR] errorLogger - errorInfo => test |
[2021-12-23T14:50:02.990] [ERROR] errorLogger - errorInfo => test |
[2021-12-23T14:51:36.617] [ERROR] errorLogger - errorInfo => test |
[2021-12-23T14:52:10.475] [ERROR] errorLogger - errorInfo => test |
[2021-12-23T14:57:16.473] [ERROR] errorLogger - errorInfo => test |
[2021-12-23T15:01:01.600] [ERROR] errorLogger - errorInfo => test |
[2021-12-23T15:03:05.025] [ERROR] errorLogger - errorInfo => test |
[2021-12-23T15:03:05.408] [ERROR] errorLogger - errorInfo => test |
[2021-12-23T15:03:10.760] [ERROR] errorLogger - errorInfo => test |
[2021-12-23T15:03:11.575] [ERROR] errorLogger - errorInfo => test |
[2021-12-23T15:03:11.767] [ERROR] errorLogger - errorInfo => test |
[2021-12-23T15:03:11.960] [ERROR] errorLogger - errorInfo => test |
[2021-12-23T15:08:36.975] [ERROR] errorLogger - errorInfo => test |
[2021-12-23T15:08:58.312] [ERROR] errorLogger - errorInfo => 参数错误 1 |
[2021-12-23T10:06:50.709] [ERROR] errorLogger - errorInfo => sign error |
[2021-12-23T10:07:07.717] [ERROR] errorLogger - errorInfo => sign error |
[2021-12-23T13:35:46.953] [ERROR] errorLogger - errorInfo => 参数错误 loginId |
[2021-12-23T13:36:03.490] [ERROR] errorLogger - errorInfo => 参数错误 loginId |
[2021-12-23T13:36:42.946] [ERROR] errorLogger - errorInfo => 参数错误 loginId |
[2021-12-23T14:34:27.786] [ERROR] errorLogger - errorInfo => 密码不正确 |
[2021-12-23T14:36:50.091] [ERROR] errorLogger - errorInfo => 密码不正确 |
[2021-12-23T14:37:20.584] [ERROR] errorLogger - errorInfo => 密码不正确 |
[2021-12-23T14:37:40.494] [ERROR] errorLogger - errorInfo => 参数错误 loginId |
[2021-12-23T14:38:30.766] [ERROR] errorLogger - errorInfo => test |
[2021-12-23T14:42:08.981] [ERROR] errorLogger - errorInfo => test |
[2021-12-23T14:43:33.365] [ERROR] errorLogger - errorInfo => 参数错误 loginId |
import formidable = require('formidable'); import formidable = require('formidable');
import { upImgPathConfig } from '../serverConfig'; import { getPort, myIp, upImgPathConfig } from '../serverConfig';
import * as userData from './../model/users'; import * as userData from './../model/users';
import * as pictureData from './../model/picture'; import * as pictureData from './../model/picture';
import * as crypto from 'crypto'; import * as crypto from 'crypto';
import { BizError } from '../util/bizError'; import { BizError } from '../util/bizError';
import { psdForPng } from '../util/psd'; import { psdForPng } from '../util/psd';
import moment = require('moment');
const fs = require('fs'); const fs = require('fs');
const path = require('path'); const path = require('path');
//上传psd文件 //上传psd文件
export async function upPsdFile(req, userId, psdType, userName, desc) { export async function upPsdFile(req, userId, userName) {
let {fileName, pId} = getFileName(); let {fileName, pId} = getFileName();
let upResult:any = await up(req, fileName); let upResult:any = await up(req, fileName);
let success = true; let success = true;
if (upResult.file) { if (upResult.files && upResult.files.file && upResult.fields ) {
let pngName = psdForPng(fileName); let {pngName, width, height} = psdForPng(fileName);
let size = upResult.file.size; let size = upResult.files.file.size;
await pictureData.addOncePic(pId, userId, userName, fileName, pngName, psdType, desc, size); let picName = upResult.fields.name;
} else { let desc = upResult.fields.desc;
let psdType = upResult.fields.psdType;
await pictureData.addOncePic(pId, userId, userName, fileName, pngName, psdType, desc, size, picName, width, height);
}else {
success = false; success = false;
throw new BizError("上传psd错误 fileName", fileName); throw new BizError("上传psd错误 fileName", fileName);
} }
...@@ -34,10 +38,13 @@ async function up(req, fileName) { ...@@ -34,10 +38,13 @@ async function up(req, fileName) {
}) })
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
form.parse(req, async (err, fields, files) => { form.parse(req, async (err, fields, files) => {
//这里验证表单的必要参数
if (!fields.name ) throw new BizError("图片名称为必要参数");
if (!fields.psdType) throw new BizError("参数错误 缺少参数 psdType");
if (err) reject(err); if (err) reject(err);
fs.rename(files.file.path, path.join(psdUrl, 'sdfa/',fileName), (err) => { fs.rename(files.file.path, path.join(psdUrl, fileName), (err) => {
if (err) throw new BizError("改名失败", err); if (err) throw new BizError("改名失败", err);
else resolve(files); else resolve({fields, files});
}); });
}); });
}); });
...@@ -56,22 +63,31 @@ export async function picList(picType) { ...@@ -56,22 +63,31 @@ export async function picList(picType) {
let picList = []; let picList = [];
let dowPsdUrl = `http://${myIp}:${getPort()}/${upImgPathConfig.psd.replace(/public\//,'')}/`;
let dowPngUrl = `http://${myIp}:${getPort()}/${upImgPathConfig.png.replace(/public\//,'')}/`;
dbList.forEach(info => { dbList.forEach(info => {
let {pId ,uId ,uName ,psdName ,pngName ,chartType ,createTime ,desc ,size} = info; let {pId ,uId ,uName ,psdName ,pngName ,chartType ,createTime ,desc ,size, picName, width, height} = info;
picList.push({ picList.push({
id:pId,
pId, pId,
uId,
uName, uName,
psdName, psdUrl:`${dowPsdUrl}${psdName}`,
pngName, pngUrl:`${dowPngUrl}${pngName}`,
chartType, chartType,
createTime, createTime:moment(createTime).format("YYYY-MM-DD HH:mm:ss"),
picName:`${picName}.psd`,
desc, desc,
size size,
width,
height
}); });
}); });
return {picList} let upUrl = `http://${myIp}:${getPort()}/api/pic/up`
return {picList, upUrl}
} }
......
...@@ -14,5 +14,5 @@ export async function createDbConnect(connectUrl:string, options?:object) { ...@@ -14,5 +14,5 @@ export async function createDbConnect(connectUrl:string, options?:object) {
if (!options) options = defaultOptions; if (!options) options = defaultOptions;
console.log("connection mongo=>", connectUrl); console.log("connection mongo=>", connectUrl);
return await mongoose.createConnection(connectUrl); return await mongoose.createConnection(connectUrl, options).catch(err => {console.log(err)});
} }
\ No newline at end of file
...@@ -5,9 +5,9 @@ import { tableInit } from "./table_init"; ...@@ -5,9 +5,9 @@ import { tableInit } from "./table_init";
let picDB; let picDB;
export async function initDB() { export async function initDB() {
mongoServerConstVal.picDBUrl console.log(mongoServerConstVal.picDBUrl);
picDB = await createDbConnect(mongoServerConstVal.picDBUrl() ).catch(err => {throw err}); picDB = await createDbConnect(mongoServerConstVal.picDBUrl ).catch(err => {throw err});
process.stdin.emit(`picDB success url => ${mongoServerConstVal.picDBUrl()} ;`); process.stdin.emit(`picDB success url => ${mongoServerConstVal.picDBUrl} ;`);
tableInit(); tableInit();
......
...@@ -3,7 +3,13 @@ import { initDB } from "./db/mongo/db_init"; ...@@ -3,7 +3,13 @@ import { initDB } from "./db/mongo/db_init";
import { httpServer } from "./net/http_server"; import { httpServer } from "./net/http_server";
import { getPort } from "./serverConfig"; import { getPort } from "./serverConfig";
process.setUncaughtExceptionCaptureCallback((e)=>{
console.log(e);
})
async function lanuch() { async function lanuch() {
initDB();
httpServer.createServer(getPort()); httpServer.createServer(getPort());
} }
......
export function httpErrorHandler(err, req, res, next) {
console.log("in httpErrorHandler");
console.log(err);
//todo 自定义错误编码
if (err) {
if (err.message == "uid is error") {
res.success({success:false, msg:err.message, code:501});
} else if (err.message == "token is error") {
res.success({success:false, msg:err.message, code:502});
}
else {
res.success({success:false, msg:err.message, code:500});
}
}
}
\ No newline at end of file
import { paramatersConfig } from "../routers/router"; import { paramatersConfig } from "../routers/router";
import { BizError } from "../util/bizError";
const configMap = {}; const configMap = {};
paramatersConfig.forEach(info => { paramatersConfig.forEach(info => {
configMap[info.url] = info.parm; configMap[info.url] = info.parm;
}); });
export function checkingReqParm(url, body) {
export function checkingReqParam(req, res, next) {
let body = req.body;
let url = req.originalUrl;
let configInfo = configMap[url]; let configInfo = configMap[url];
if (!configInfo) return true; if (!configInfo) return next();
for (let key in configInfo) { for (let key in configInfo) {
let type = typeof configInfo[key]; let configPam = configInfo[key];
let thisParamater = configInfo[key]; let bodyPam = body[key];
let configType = typeof configInfo[key];
let bodyType = typeof body[key]; let bodyType = typeof body[key];
let bodyThisParamater = body[key]; if ( configType != bodyType ) throw new BizError(`参数错误 ${key}`);
if ( type != bodyType ) return `参数错误 ${key}`; if (configType != "number" && configType != "string" && configType != "boolean") {
if (thisParamater == [] && !(bodyThisParamater instanceof Array) ) `参数错误 ${key}`; if (configPam instanceof Array ) {
if ( !(bodyPam instanceof Array) ) throw new BizError(`参数错误 ${key}`);
}
}
} }
return true; return next();
} }
\ No newline at end of file
import { selectUserById } from "../model/users";
import { BizError } from "../util/bizError"; import { BizError } from "../util/bizError";
const LRU = require("lru-cache") const LRU = require("lru-cache")
...@@ -15,37 +16,33 @@ const notTokenSign = 'xxakdfwosaddf!@3sadfhDAse'; ...@@ -15,37 +16,33 @@ const notTokenSign = 'xxakdfwosaddf!@3sadfhDAse';
const signKey = "12345678asd!@#%DFFGa"; const signKey = "12345678asd!@#%DFFGa";
export async function checkSign(req, res, next) { export async function checkSign(req, res, next) {
let userId = req.headers.userId; let userId = req.headers.userId;
let token = req.headers.token; let token = req.headers.token;
let timeStamp = req.headers.timestamp;
if (notTokenInterfaceList.indexOf(req.path) < 0 ) {
let user = await selectUserById(userId);
if (!user) throw new BizError("uid is error");
if (token != user.token) throw new BizError("token is error");
req.headers.user = {
userId : user.uId,
name : user.uName,
};
}
//todo
// let timeStamp = req.headers.timestamp;
if (notTokenInterfaceList.indexOf(req.path) < 0 && req.headers.sign != notTokenSign ) { // if (notTokenInterfaceList.indexOf(req.path) < 0 && req.headers.sign != notTokenSign ) {
let now = Date.now(); // let now = Date.now();
if (Math.abs(now - timeStamp) > 120000) { // if (Math.abs(now - timeStamp) > 120000) {
console.log(req.path, new Date(now), "timeStamp", timeStamp); // console.log(req.path, new Date(now), "timeStamp", timeStamp);
return next(new BizError('timeStamp error time difference error')) // return next(new BizError('timeStamp error time difference error'))
} // }
let sign = getSign(userId, token, timeStamp, req.path, signKey); // let sign = getSign(userId, token, timeStamp, req.path, signKey);
let cacheSign = cache.get(sign);
if (cacheSign) {
if (cacheSign > 5) return next(new BizError("sign error repetitive sign"));
else {
cacheSign++;
cache.set(sign,cacheSign);
}
}
else {
cache.set(sign,1);
}
if (sign != req.headers.sign) { // if (sign != req.headers.sign) {
console.log(req.path, JSON.stringify(req.headers)); // next(new BizError("sign error"))
next(new BizError("sign error")) // }
} // }
}
next(); next();
} }
......
export function watch(req, res, next) {
res.success = success.bind({res:res, req:req});
return next();
}
function success(result) {
let resultPack;
if (result && result.success === undefined) {
resultPack = {result, success:true, code:200};
}
if (!result) {
resultPack = {code:500, success:false, msg:'result is null'};
}
this.res.send(resultPack);
}
...@@ -5,13 +5,16 @@ import { picDB } from "../db/mongo/db_init"; ...@@ -5,13 +5,16 @@ import { picDB } from "../db/mongo/db_init";
const pictureSchema = new Schema({ const pictureSchema = new Schema({
pId: {type: String, index:true}, pId: {type: String, index:true},
uId: {type: String}, uId: {type: String},
uName: {type: String}, uName: {type: String},//上传人
psdName: {type: String}, psdName: {type: String}, //psd文件名称
pngName: {type: String}, pngName: {type: String}, //png文件名称
chartType:{type:Number, index:true},// 按图表类型分 后续有新的标签类型,就往后加 chartType:{type:Number, index:true},// 按图表类型分 后续有新的标签类型,就往后加
createTime:{type:Date, index:true}, createTime:{type:Date, index:true},
picName:String, //图片名称
desc:{type:String},//描述 desc:{type:String},//描述
size:{type:Number},//文件大小 单位: b size:{type:Number},//文件大小 单位: b
width:Number,
height:Number,
}); });
let pictureModel; let pictureModel;
...@@ -30,7 +33,7 @@ export async function selectPicById(pId) { ...@@ -30,7 +33,7 @@ export async function selectPicById(pId) {
} }
export async function addOncePic(pId, uId, uName, psdName, pngName, chartType, desc, size) { export async function addOncePic(pId, uId, uName, psdName, pngName, chartType, desc, size, picName, width, height) {
let addInfo = {pId, uId, uName, psdName, pngName, chartType, desc, size, createTime:new Date()}; let addInfo = {pId, uId, uName, psdName, pngName, chartType, desc, size, createTime:new Date(), picName, width, height};
return await pictureModel.create(addInfo); return await pictureModel.create(addInfo);
} }
...@@ -6,9 +6,10 @@ import { picDB } from "../db/mongo/db_init"; ...@@ -6,9 +6,10 @@ import { picDB } from "../db/mongo/db_init";
const usersSchema = new Schema({ const usersSchema = new Schema({
uId: {type:String, index: true}, //id uId: {type:String, index: true}, //id
loginId:{type:String, index:true},//管理员账号 loginId:{type:String, index:true},//管理员账号
uName: {type: String}, //管理员名称 uName: {type: String}, //名称
uPwd: {type: String}, //管理员密码 uPwd: {type: String}, //密码
uImg: {type: String}, //头像 uImg: {type: String}, //头像
token:String,//token
}); });
...@@ -28,7 +29,7 @@ export async function selectUserById(uId) { ...@@ -28,7 +29,7 @@ export async function selectUserById(uId) {
} }
export async function selectUserByLoginId(loginId) { export async function selectUserByLoginId(loginId) {
return await usersModel.find( {loginId}).exec(); return await usersModel.findOne( {loginId}).exec();
} }
export async function addOnceUser(uId, loginId, uName, uPwd) { export async function addOnceUser(uId, loginId, uName, uPwd) {
......
...@@ -3,10 +3,12 @@ import bodyParser = require('body-parser'); ...@@ -3,10 +3,12 @@ import bodyParser = require('body-parser');
import sign = require('../middleware/sign'); import sign = require('../middleware/sign');
import routers = require('../routers/router'); import routers = require('../routers/router');
import compression = require('compression'); import compression = require('compression');
import { encryptionReturn } from '../middleware/encryptionReturn';
import { getEnv } from '../serverConfig';
import { checkSign } from '../middleware/sign'; import { checkSign } from '../middleware/sign';
import { checkingReqParm } from '../middleware/paramaterCheck'; import { checkingReqParam } from '../middleware/paramaterCheck';
import { httpErrorHandler } from '../middleware/httpErrorHandler';
import { watch } from '../middleware/watch';
import * as fallback from 'express-history-api-fallback';
import * as path from "path";
export class httpServer { export class httpServer {
static createServer(port:number) { static createServer(port:number) {
...@@ -29,19 +31,16 @@ export class httpServer { ...@@ -29,19 +31,16 @@ export class httpServer {
httpServer.use(express.static('public') ); httpServer.use(express.static('public') );
httpServer.use(watch);
httpServer.use(bodyParser.json({limit:"10kb"})); httpServer.use(bodyParser.json({limit:"10kb"}));
httpServer.use(compression()); httpServer.use(compression());
httpServer.use(checkSign); httpServer.use(checkSign);
httpServer.use(checkingReqParm); httpServer.use(checkingReqParam);
//演示环境加密数据
if (getEnv() == "dem") {
console.log("演示环境 开启数据加密");
httpServer.use(encryptionReturn);
}
routers.setRouter(httpServer);
routers.setRouter(httpServer);
httpServer.use(httpErrorHandler);
httpServer.listen(port); httpServer.listen(port);
console.log('server listen on port:'+port); console.log('server listen on port:'+port);
......
import * as asyncHandler from 'express-async-handler'; import * as asyncHandler from 'express-async-handler';
import * as picBiz from '../biz/pic'; import * as picBiz from '../biz/pic';
export function setRouter(httpServer) { export function setRouter(httpServer) {
httpServer.post('/api/pic/up', asyncHandler(upFile)); httpServer.post('/api/pic/up', asyncHandler(upFile));
httpServer.post('/api/pic/list', asyncHandler(fileList)); httpServer.post('/api/pic/list', asyncHandler(fileList));
...@@ -7,22 +9,20 @@ export function setRouter(httpServer) { ...@@ -7,22 +9,20 @@ export function setRouter(httpServer) {
} }
async function upFile(req, res) { async function upFile(req, res) {
let userId = req.userId; let userId = req.headers.user.userId || "testId";
let psdType = req.psdType; let psdType = req.headers.user.name || "testUserName";
let userName = req.userName; let result = await picBiz.upPsdFile(req, userId, psdType);
let desc = req.desc; res.success(result);
let result = await picBiz.upPsdFile(req, userId, psdType, userName, desc);
res.send(result);
} }
async function fileList(req, res) { async function fileList(req, res) {
let picType = req.picType; let picType = req.picType;
let result = await picBiz.picList(picType); let result = await picBiz.picList(picType);
res.send(result); res.success(result);
} }
async function picDetails(req, res) { async function picDetails(req, res) {
let pId = req.pId; let pId = req.pId;
let result = await picBiz.getPicDetails(pId); let result = await picBiz.getPicDetails(pId);
res.send(result); res.success(result);
} }
\ No newline at end of file
...@@ -11,10 +11,6 @@ export function setRouter(httpServer) { ...@@ -11,10 +11,6 @@ export function setRouter(httpServer) {
export const paramatersConfig = [ export const paramatersConfig = [
{url:"/api/user/login", parm:{loginId:"", pwd:""} }, {url:"/api/user/login", parm:{loginId:"", pwd:""} },
{url:"/api/user/register", parm:{loginId:"", pwd:-1, uName:""} }, {url:"/api/user/register", parm:{loginId:"", pwd:"", uName:""} },
{url:"/api/user/test", parm:{roles:[], data:{}, num:1, str:"'" } } {url:"/api/user/test", parm:{roles:[], data:{}, num:1, str:"" } }
]; ];
export function newSetRouter(httpServer) {
}
\ No newline at end of file
import * as asyncHandler from 'express-async-handler'; import * as asyncHandler from 'express-async-handler';
import * as userBiz from './../biz/user'; import * as userBiz from './../biz/user';
export function setRouter(httpServer) { export function setRouter(httpServer) {
httpServer.post('/api/user/login', asyncHandler(login)); httpServer.post('/api/user/login', asyncHandler(login));
httpServer.post('/api/user/register', asyncHandler(register)); httpServer.post('/api/user/register', asyncHandler(register));
......
const os = require('os');
//端口 //端口
export function getPort() : number { export function getPort() : number {
return Number(process.env.PORT) || Number(process.argv[3]) || 60000; return Number(process.env.PORT) || Number(process.argv[3]) || 60000;
} }
// sit 测试环境 prod 生产环境 dem 演示环境(测试数据,前端无密码访问)
export function getEnv() : string {
return process.argv[2] || "sit";
}
//mongo数据库连接字符 //mongo数据库连接字符
export const mongoServerConstVal = { export const mongoServerConstVal = {
picDBUrl:getPicDBUrl, picDBUrl:getPicDBUrl()
} }
//mysql数据库连接对象
export const mySqlConfig = {
mysqlHost: '',
mysqlPort: 0,
mysqlUser: '',
mysqlPwd: '',
};
//png路径 //png路径
export const upImgPathConfig = { export const upImgPathConfig = {
png:"res/up/png", png:"public/up/png",
jpg:"res/up/jpg", jpg:"public/up/jpg",
psd:"res/up/psd", psd:"public/up/psd",
}; };
//log路径 //log路径
...@@ -40,3 +30,19 @@ function getPicDBUrl() { ...@@ -40,3 +30,19 @@ function getPicDBUrl() {
return 'mongodb://127.0.0.1:27017/picDB'; return 'mongodb://127.0.0.1:27017/picDB';
} }
export let myIp = "";
function getIPAdress() {
var interfaces = os.networkInterfaces();
console.log('interfaces',interfaces);
for (var devName in interfaces) {
var iface = interfaces[devName];
for (var i = 0; i < iface.length; i++) {
var alias = iface[i];
if (alias.family === 'IPv4' && alias.address !== '127.0.0.1' && !alias.internal) {
return alias.address;
}
}
}
}
myIp = getIPAdress();
...@@ -7,6 +7,6 @@ export class BizError extends Error { ...@@ -7,6 +7,6 @@ export class BizError extends Error {
msgStr += once + ' '; msgStr += once + ' ';
}); });
logError(msgs); logError(msgs);
super(msgStr) super(msgStr);
} }
} }
\ No newline at end of file
...@@ -7,10 +7,11 @@ const path = require('path'); ...@@ -7,10 +7,11 @@ const path = require('path');
* @param fileName psd文件名称,记得带.psd * @param fileName psd文件名称,记得带.psd
*/ */
export function psdForPng(fileName:string) { export function psdForPng(fileName:string) {
fileName = "1213"
const psdName = fileName; const psdName = fileName;
const pngName = fileName+".png"; const pngName = fileName.replace(/.psd/, '')+".png";
let width = 0;
let height = 0;
let filePath = path.join(__dirname.substring(0,__dirname.indexOf("out")), upImgPathConfig.psd, psdName); let filePath = path.join(__dirname.substring(0,__dirname.indexOf("out")), upImgPathConfig.psd, psdName);
let pngFilePath = path.join(__dirname.substring(0,__dirname.indexOf("out")), upImgPathConfig.png, pngName); let pngFilePath = path.join(__dirname.substring(0,__dirname.indexOf("out")), upImgPathConfig.png, pngName);
...@@ -18,7 +19,9 @@ export function psdForPng(fileName:string) { ...@@ -18,7 +19,9 @@ export function psdForPng(fileName:string) {
try { try {
let thisPsd = PSD.fromFile(filePath); let thisPsd = PSD.fromFile(filePath);
thisPsd.parse() thisPsd.parse()
thisPsd.image.toPng(); let pngInfo = thisPsd.image.toPng();
width = pngInfo.width;
height = pngInfo.height;
PSD.open(filePath).then(function (psd) { PSD.open(filePath).then(function (psd) {
psd.image.saveAsPng(pngFilePath); psd.image.saveAsPng(pngFilePath);
}); });
...@@ -26,5 +29,5 @@ export function psdForPng(fileName:string) { ...@@ -26,5 +29,5 @@ export function psdForPng(fileName:string) {
throw new BizError(psdName, "转png失败", err.message || err.msg); throw new BizError(psdName, "转png失败", err.message || err.msg);
} }
return pngName; return {pngName, width, height};
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment