开发环境
后端:VFP SP2 7423 +祺佑三层开发框架(猫框)
前端:VUE2.0+Element
思路
实现BS上传就是利用猫框的importexcel类将EXCEL文件转换为临时表,将临时表插入到DAL_CA中实现一键保存。
1. 首先来看一下MSSQL数据结构
2. 代码生成器生成DAL_CA类
3. 将生成的DAL_CA类保存到开发框架的DAL目录中
类名同文件名
4. 编写业务逻辑controller类
Define Class ctl_skin_ht as session*--上传导入文件Procedure upfileoResult=GetUpFile() &&返回为集合对象*--原文件名cOldFilename=oResult.ofieldcoll.Item("file").filename &&文件名 跟上传name(微信)对应 key (mui) 对应cExtName=Justext(cOldFilename) &&扩展名IF !INLIST(UPPER(cExtName),"XLS","XLSX")ERROR "必须上传EXCEL文件"ENDIF cFilename=Ttoc(Datetime(),1)+Right(Transform(Second()*1000),6)cFilename=cFilename+"."+cExtnamecMydata=oResult.ofieldcoll.Item("file").fielddata &&文件内容cFilePath=getwwwrootpath("upfile")If !Directory(cFilePath)Md &cFilePath &&目前只在调试服务器下执行成功,发布时要预先创建EndifIf Strtofile(cMydata,cFilePath+cFilename)<=0Error "写入文件失败,目录是否存在且可读写"Endif*--导入EXCEL生成临时表xx=Newobject("importexcel","importexcel.prg")xx.cursorstruc="手机型号 c(240),编号 c(50)"xx.Alias="tmpxxx"If !xx.Import(Sys(5)+Sys()+"\"+cFilePath+cFilename)Error xx.msgEndif*-- 临时表写入DAL类,实现一键保存oDAL=Newobject("Dal_skin","Dal_skin.prg")oDAL.Nodata=.T.If !oDAL.CursorFill(.T.)Aerror(laerror)Error laerror(2)EndifcTmpAlias=oDAL.AliasInsert Into &cTmpAlias(model,skincode,mainmodel,types,Type,Memo,price) Select * From tmpxxxIf !oDAL.Save()Error oDal.msgEndifReturn cursortojson(oDAL.alias)EndprocENDDEFINE
5. 前端页面,也可以自己写上传的页面
放下一个上传组件
<el-upload :on-success="handle_success"class="upload-demo":action="upurl" multiple:limit="1"><el-button size="small" type="primary">点击上传</el-button><div slot="tip" class="el-upload__tip">只能上传excel文件</div></el-upload>
JS代码
export default {components: {},data() {return {upurl:"ctl_skin_ht.fsp?proc=upfile"},methods: {handle_success(res){console.log(res);if(res.errno!=0){this.$message.warning(res.errmsg); return; }this.$message.warning("上传成功"); },}}
运行调试服务器,测试上传,完美成功。但是发布到IIS却出现了:
下篇继续填坑