版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
3.6附件功能的開發(fā)實現(xiàn)深圳市信息職業(yè)技術學院目
錄附件開發(fā)示例01附件開發(fā)注意事項02上傳按鈕框架實現(xiàn)介紹03下載按鈕框架實現(xiàn)介紹04知識回顧平臺打印模板設置介紹;單據打印開發(fā)示例;標簽打印開發(fā)示例;單據和標簽打印開發(fā)注意事項。學習目標通過本節(jié)學習可以:掌握附件功能的開發(fā)實現(xiàn);掌握附件功能的異常定位并能夠修復異常;了解框架上傳按鈕的實現(xiàn)邏輯;了解框架下載按鈕的實現(xiàn)邏輯。01附件開發(fā)示例附件使用介紹附件使用介紹平臺附件功能的實現(xiàn)是作為子列表實現(xiàn)。平臺所有附件名稱、大小、路徑等都是存在表BD_ATTACHMENT中,不同功能的附件數據通過所屬父IDOWNER_ID和鑒別器DISCRIMINATOR進行過濾數據的。平臺附件文件是存放到對應服務器中的,所以使用附件功能需要配置附件方式。附件功能的屬性和界面配置框架有做通用實現(xiàn),所以在做附件功能開發(fā)時,實體繼承框架的附件實體類去實現(xiàn),如果未增加屬性,框架實現(xiàn)的操作按鈕也能滿足要求,重寫的附件不需要做界面配置,使用框架通用的配置即可。思考題在讀者管理功能中添加一個附件子列表,附件子列表包含上傳、下載和刪除命令,能正常上傳、下載文件和刪除數據,如何實現(xiàn)?附件開發(fā)示例開發(fā)步驟在服務端工程添加附件子實體,繼承Attachment,關聯(lián)讀者管理的實體類。附件開發(fā)示例開發(fā)步驟添加附件倉庫,以附件實體類名+Repository進行命名,繼承AttachmentRepository,標記倉庫使用的數據提供者,因為要關聯(lián)數據提供者類,所以使用附件的工程必須要添加數據提供者類。附件開發(fā)示例開發(fā)步驟添加附件實體配置類,繼承AttachmentEntityConfig,重寫配置元數據的方法ConfigMeta,在ConfigMeta方法中設置啟用鑒別器,通過Meta.EnableDiscriminator(“名稱唯一”)設置。附件開發(fā)示例開發(fā)步驟在讀者管理實體中添加附件的列表屬性。附件開發(fā)示例開發(fā)步驟在配置文件中,配置上傳和下載信息,支持ftp和ntfs,如下是ntfs配置,上傳和下載路徑支持本地路徑配置。附件開發(fā)示例開發(fā)步驟效果,能夠正常上傳、下載和刪除文件。知識擴展知識擴展如果讀者的附件只有下載權限,如何實現(xiàn)?知識擴展知識擴展可以將子屬性的視圖配置的分組設置為readonly,如ViewGroup="Readonly"?思考題文件路徑為空,文件上傳失敗,無法下載,可能的原因是?附件倉庫未按規(guī)范命名,附件倉庫的命名規(guī)范:附件實體類名+Repository。02附件開發(fā)注意事項附件開發(fā)注意事項注意事項開發(fā)附件功能的服務端工程必須要有數據提供者。附件功能必須要有數據倉庫,且數據倉庫必須是“附件的實體名+Repository”命名。附件的實體配置要啟用鑒別器,且鑒別器配置的字符串不能跟其他功能的附件的鑒別器沖突,否則數據有可能會沖突。平臺開發(fā)的附件功能只能做為子列表來展示。使用附件必須配置附件方式。附件默認有上傳、刪除、下載的權限,如果要設置只有下載的權限,可以給附件子列表設置分組為Readonly。 View.ChildrenProperty(p=>p.ReaderAttachment).ViewGroup="Readonly";03上傳按鈕框架實現(xiàn)介紹思考題框架上傳按鈕上傳的文件大小是否有限制?如果有,最大能上傳多大的文件?上傳按鈕框架前端實現(xiàn)前端實現(xiàn)canExecute和execute方法邏輯。
/***是否可以執(zhí)行*@param{*}view*@returns總是可以執(zhí)行,*子類可以根據具體情況覆寫*/canExecute:function(view){if(view.getParent().getCurrent()==null)returnfalse;returntrue;},/***執(zhí)行方法**@param{*}listView*@param{*}source*/execute:function(listView,source){varbtnFile=Ext.create('Ext.form.field.FileButton',{renderTo:Ext.getBody(),hidden:true});btnFile.on("change",this.buttonChange,this);btnFile.fileInputEl.dom.click();},父的當前操作行為null,上傳按鈕不允許操作創(chuàng)建ext的文件按鈕監(jiān)聽文件按鈕的變更事件,即用戶選擇文件時,會執(zhí)行到buttonChange方法的邏輯文件按鈕的點擊事件上傳按鈕框架前端實現(xiàn)前端實現(xiàn)buttonChange方法邏輯。buttonChange:function(field,newValue){varme=this;varfile=field.fileInputEl.dom.files.item(0);varfileSize=file.size;varentity=me.view.getParent().getCurrent().data;varfileName=;varvalidateResult=me.validateFile(fileSize,fileName,file,entity);if(!validateResult){return;}varfileExt=fileName.substring(fileName.lastIndexOf(".")).toLowerCase();varfileReader=newFileReader('file://'+newValue);fileReader.readAsDataURL(file);獲取文件獲取文件大小獲取父當前操作行數據獲取文件名稱調用文件校驗,校驗不通過,直接返回將文件的擴展名轉為小寫讀取文件上傳按鈕框架前端實現(xiàn)前端實現(xiàn)buttonChange方法邏輯。fileReader.onload=function(e){if(me.view){if(entity){SIE.Msg.wait("提示框","正在上傳,請稍等.....".t());me.view.execute({data:{Attachment:{OwnerId:entity.Id,Content:e.target.result,FileSize:fileSize,FileExtesion:fileExt,FileName:fileName},Entity:entity},success:function(res){
me.view.reloadData();
me.afterSave(me.view);SIE.Msg.close();Ext.Msg.alert('提示'.t(),res.Result);}});}}}}上傳文件操作執(zhí)行后端邏輯傳到后端的參數重新加載數據調用保存后方法,該方法是空方法,用于擴展邏輯關閉等待提示框上傳成功后的提示消息上傳按鈕框架前端實現(xiàn)前端實現(xiàn)validateFile方法邏輯。validateFile:function(fileSize,fileName,file,entity){if(Ext.isEmpty(fileName)){Ext.MessageBox.alert("提示","上傳的文件名不能為空。".t());returnfalse;}varsize=fileSize/1024;if(size>20000){Ext.MessageBox.alert("提示","附件不能大于20M。".t());returnfalse;}returntrue;},文件名稱的校驗文件大小的校驗上傳按鈕框架后端實現(xiàn)后端實現(xiàn)全局變量的屬性定義。 ///<summary>///附件保存前驗證事件,子類可以根據需要擴展,比如驗證附件中的內容
///</summary>publiceventFunc<Stream,string>ValidatingFileStream;///<summary>///附件保存前事件,子類可以根據需要擴展
///</summary>publiceventFunc<UploadAttachmentViewArgs,string>SavingAttachement;///<summary>///附件保存后事件,子類可以根據需要擴展,比如保存實體相關的內容
///</summary>publiceventFunc<UploadAttachmentViewArgs,string>SavedAttachement;上傳按鈕框架后端實現(xiàn)后端實現(xiàn)執(zhí)行方法邏輯。protectedoverrideobjectExcute(ViewArgsargs,stringscope){varmeta=ClientEntities.Find(args.Type);if(scope!=meta.EntityType.GetQualifiedName())thrownewSystem.Security.SecurityException("參數type[{0}]與令牌不一致".FormatArgs(args.Type));varviewArgs=this.DeserializeData(args.Data);varentityType=meta.EntityType;viewArgs.Attachment.OwnerType=entityType;varsm=this.GetAttachement(viewArgs);
varvalidateMsg=this.OnValidateFileStream(sm);if(!string.IsNullOrEmpty(validateMsg)){returnvalidateMsg;}
this.OnSavingAttachement(viewArgs);
this.SaveAttachement(viewArgs,entityType);
this.OnSavedAttachement(viewArgs);return"上傳成功。".L10N();}從前端json數據反序列化獲取流對象驗證事件,保存附件前的驗證調用保存前事件執(zhí)行保存附件邏輯保存附件后的處理邏輯上傳按鈕框架后端實現(xiàn)后端實現(xiàn)上傳按鈕后端其他方法邏輯實現(xiàn)參考。04下載按鈕框架實現(xiàn)介紹思考題做導入功能時,下載的模板是提前配置好的,點擊導入時,也需要做數據的關聯(lián)校驗,該如何實現(xiàn)?下載按鈕的前端實現(xiàn)前端實現(xiàn)SIE.defineCommand('SIE.Web.Common.Attachments.Commands.FtpDownloadCommand',{extend:'SIE.cmd.ExportCommandBase',meta:{text:"下載",group:"edit",iconCls:"icon-Downloadicon-blue"},canExecute:function(view){varitem=view.getCurrent();if(item!=null){returntrue;}returnfalse;},execute:function(listView,source){varitem=listView.getCurrent();this.doSubmit({Name:listView.getSourceCmd().command,Token:listView.getToken(),Data:SIE.data.Utils.seriaizeRequest({Data:SIE.data.Utils.seriaizeRequest({FileName:item.data.FileName,FilePath:item.data.FilePath,})})});}});下載按鈕框架后端實現(xiàn)后端實現(xiàn)publicclassFtpDownloadCommand:ViewCommand{///附件配置地址,從web.config中的節(jié)點client.PathAttachment獲取 ///<returns>文件流</returns>protectedoverrideobjectExcute(ViewArgsargs,stringscope){try{vardata=args.Data.ToJsonObject<AttachmentArgs>();varfileBytes=RT.Service.Resolve<AttachmentController>().FileDownload(data.FilePath,data.FileName);//byte到內存流輸出
varfileStreamResult=newFileStreamResult(newMemoryStream(fileBytes),"application/octet-stream");fileStreamResult.FileDownloadName=data.FileName;returnfileStreamResult;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年年終總結創(chuàng)意黑金風的團隊與文化
- 2026年碳中和目標下的建筑市場應對策略
- 2026年電子檔案加密存儲流程
- 2026江蘇蘇州市吳中區(qū)社會福利中心招聘護理員1人考試參考題庫及答案解析
- 2025年西安市曲江第三中學筆試及答案
- 2025年鹽城市水利事業(yè)單位考試及答案
- 2025年金英杰保定面授筆試及答案
- 2025年湖北省義教筆試及答案
- 2025年TCL技術類筆試題目及答案
- 2026年黃山市黟縣事業(yè)單位統(tǒng)一公開招聘工作人員14名筆試參考題庫及答案解析
- 環(huán)境多因素交互導致慢性病共病的機制研究
- 2026湖南衡陽耒陽市公安局招聘75名警務輔助人員考試參考題庫及答案解析
- 電力工程施工方案及規(guī)范
- 2026年中共佛山市順德區(qū)委組織部佛山市順德區(qū)國有資產監(jiān)督管理局招聘備考題庫及參考答案詳解
- 多重耐藥菌醫(yī)院感染預防與控制技術指南完整版
- 2026年1月浙江省高考(首考)英語試題(含答案詳解)+聽力音頻+聽力材料
- 河南新鄉(xiāng)鶴壁安陽焦作2026年1月高三一模物理試題+答案
- 2026年食品安全快速檢測儀器項目可行性研究報告
- 2025年新版八年級上冊歷史期末復習必背歷史小論文范例
- 2026年及未來5年市場數據中國電能計量裝置市場競爭格局及投資戰(zhàn)略規(guī)劃報告
- 智慧物流背景下多式聯(lián)運的協(xié)同發(fā)展與運輸效能提升研究畢業(yè)論文答辯匯報
評論
0/150
提交評論