首页 > 代码库 > 使用 IntraWeb (30) - TIWAppInfo、TIWMimeTypes、TIWAppCache
使用 IntraWeb (30) - TIWAppInfo、TIWMimeTypes、TIWAppCache
使用 IntraWeb (30) - TIWAppInfo、TIWMimeTypes、TIWAppCache
TIWAppInfo //IntraWeb 12.2.15 开始使用 TIWAppInfo 来获取应用的相关信息, 和 IWServerController、WebApplication 的某些属性有重复TIWMimeTypes //IntraWeb 14.0.11 新增, 可方便处理 Http Mime Types; Mime 类型? 我的理解是: 浏览器接受到一个文件或数据流, 如果让浏览器解析(而不是下载), 浏览器该按什么类型来解析呢? 所以需要指定类型.TIWAppCache //IntraWeb 14.0.29 新增, 可以方便处理缓存文件; 之前有类似的功能, 如: IWServerController.NewCacheFile{三个类提供的都是 class 方法, 使用时无须实例化}
TIWAppInfo 所在单元及继承链:
IW.Common.AppInfo.TIWAppInfo < TObject
主要成员:
class function GetAppFullFileName: stringclass function GetAppFileName: stringclass function GetAppLogFileName: stringclass function GetAppPath: stringclass function GetAppName: stringclass function GetSystemPath: stringclass function GetTempPath: stringclass function GetCurrentPath: stringclass function GetComputerName: stringclass function GetFileInfo(const aFileName: string; aFileInfo: TFileInfo): stringclass function GetAppVersion: string
测试:
uses IW.Common.AppInfo;procedure TIWForm1.IWButton1Click(Sender: TObject);var str: string; i: Integer;begin IWMemo1.Lines.Add(TIWAppInfo.GetAppFullFileName); IWMemo1.Lines.Add(TIWAppInfo.GetAppFileName); IWMemo1.Lines.Add(TIWAppInfo.GetAppLogFileName); IWMemo1.Lines.Add(TIWAppInfo.GetAppPath); IWMemo1.Lines.Add(TIWAppInfo.GetAppName); IWMemo1.Lines.Add(TIWAppInfo.GetSystemPath); IWMemo1.Lines.Add(TIWAppInfo.GetTempPath); IWMemo1.Lines.Add(TIWAppInfo.GetCurrentPath); IWMemo1.Lines.Add(TIWAppInfo.GetComputerName); IWMemo1.Lines.Add(TIWAppInfo.GetAppVersion); IWMemo1.Lines.Add(‘===============‘); for i := 0 to 9 do begin str := TIWAppInfo.GetFileInfo(TIWAppInfo.GetSystemPath + ‘NotePad.exe‘, TFileInfo(i)); IWMemo1.Lines.Add(str); end; IWMemo1.Lines.Add(‘===============‘);end;
TIWMimeTypes 所在单元及继承链:
IWMimeTypes.TIWMimeTypes < TObject
主要成员:
class function IsStaticFile(const aFileName: string; out aMimeType: string): Boolean //class function GetAsString(const aFileExtension: string): string //根据扩展名即可获取类型的标准字符串很方便, 譬如 TIWMimeTypes.GetAsString(‘.pdf‘) 将返回 application/pdfclass function GetAsString(const aMimeType: TMimeType): string //TIWMimeTypes.GetAsString(mtPDF) 结果也是 application/pdfclass procedure RegisterType(const aFileExtension: string; const aMimeTypeDesc: string; const aIsStatic: Boolean) //能自行注册class procedure UnregisterType(const aFileExtension: string) //{IWMimeTypes.TIWMimeType 枚举的定义}TIWMimeType = (mtUnknown, mtBinary, mtJPG, mtGIF, mtPNG, mtRSS, mtXML, mtTXT, mtICO, mtHTML, mtJavaScript, mtPDF, mtZIP, mtCSS, mtMP3, mtOGG, mtWAV, mtEXE, mtFlash, mtWMV, mtMOV, mtAVI, mtMPEG, mtXSL);{IWMimeTypes 单元提供的常用的 Mime 类型常量}MIME_JPG = ‘image/jpeg‘; MIME_GIF = ‘image/gif‘; MIME_PNG = ‘image/png‘; MIME_RSS = ‘application/rss+xml; charset=UTF-8‘; MIME_XML = ‘text/xml; charset=UTF-8‘; MIME_XSL = ‘text/xsl; charset=UTF-8‘; MIME_TXT = ‘text/plain; charset=UTF-8‘; MIME_ICO = ‘image/x-ico‘; MIME_JavaScript = ‘application/x-javascript; charset=UTF-8‘;MIME_PDF = ‘application/pdf‘; MIME_CSS = ‘text/css; charset=UTF-8‘; MIME_MP3 = ‘audio/mpeg‘; MIME_OGG = ‘audio/ogg‘; MIME_WAV = ‘audio/wav‘; MIME_Flash = ‘application/x-shockwave-flash‘; MIME_WMV = ‘video/x-ms-wmv‘; MIME_MOV = ‘video/quicktime‘; MIME_AVI = ‘video/x-msvideo‘; MIME_MPEG = ‘video/mpeg‘; MIME_Binary = ‘application/octet-stream‘; MIME_HTML = ‘text/html; charset=UTF-8‘;{ 更多不常用的类型可参见: http://www.iana.org/assignments/media-types/media-types.xhtml }
TIWAppCache 所在单元及继承链:
IWAppCache.TIWAppCache < TObject
主要成员:
{建立缓存流; 如需特别指定第一个参数时, 不如选用下面三个函数}class procedure NewCacheStream(aOwner: TObject; //建立页面级的缓存要指定当前窗体(一般用 Self); 建立 Session 级缓存可指定 WebApplication; 建立应用级缓存指定 nil const aContentType: string; //Mime Type 字符串, 如: application/pdf aCacheType: TCacheType; //缓存期选项:ctOneTime、ctApp、ctSession、ctForm out ACacheStream: TCacheStream; //输出流 out aFileHRef: string //输出缓存文件地址 ){建立建立应用级缓存流; 参数 1 将被忽略, 其它同上}class procedure NewAppCacheStream(aOwner: TObject; const aContentType: string; out ACacheStream: TCacheStream; out aFileHRef: string){建立建立 Session 级缓存流; 参数 1 将被忽略, 其它同上}class procedure NewSessionCacheStream(aOwner: TObject; const aContentType: string; out ACacheStream: TCacheStream; out aFileHRef: string){建立建立页面级缓存流; 参数 1 将被忽略, 其它同上}class procedure NewFormCacheStream(aOwner: TObject; const aContentType: string; out ACacheStream: TCacheStream; out aFileHRef: string){保存流到缓存文件}class function StreamToCacheFile(aOwner: TObject; AStream: TStream; const aContentType: string; const aCacheType: TCacheType): string{保存图像到缓存文件}class function GraphicToCacheFile(aOwner: TObject; AGraphic: TGraphic; const aCacheType: TCacheType; const PreferPNG: Boolean): stringclass function GraphicToCacheFile(aOwner: TObject; AGraphic: TGraphic; imgType: TIWImageOutput; const aCacheType: TCacheType): string //TIWImageOutput = (ioGIF, ioJPEG, ioPNG){保存资源到缓存文件}class function ResourceToCacheFile(aOwner: TObject; const aResourceName: string; const aContentType: string; const aCacheType: TCacheType): string{情况缓存}class function ClearCache(ACacheList: TStrings): Integer{创建一个临时文件, 位置在用户临时文件夹}class function NewTempFileName: string{添加文件到缓存}class function AddFileToCache(aOwner: TObject; const aFileName: string; const aContentType: string; const aCacheType: TCacheType): string
测试 - 将资源中的图片提取到缓存, 然后呈现出来:
uses IWAppCache, IWServerInternalFiles;procedure TIWForm1.IWButton1Click(Sender: TObject);var fStream: TStream; fPath: string;begin fStream := TIWServerInternalFiles.GetResourceStream(‘IW_GFX_LogoIntraWeb‘); fPath := TIWAppCache.StreamToCacheFile(Self, fStream, ‘image/png‘); IWImageFile1.ImageFile.Filename := fPath; fStream.Free;end;
常用路径:
{获取代码:-------------------------------------------------------}uses ServerController, IW.Common.AppInfo;procedure TIWForm1.IWAppFormCreate(Sender: TObject);begin IWMemo1.Lines.Add(IWServerController.ContentPath + #9‘{IWServerController.ContentPath}‘); IWMemo1.Lines.Add(IWServerController.CacheDir + #9‘{IWServerController.CacheDir}‘); IWMemo1.Lines.Add(IWServerController.TemplateDir + #9‘{IWServerController.TemplateDir}‘ + sLineBreak); IWMemo1.Lines.Add(WebApplication.AppUrlBase + #9‘{WebApplication.AppUrlBase}‘); IWMemo1.Lines.Add(WebApplication.InternalUrlBase + #9‘{WebApplication.InternalUrlBase}‘); IWMemo1.Lines.Add(WebApplication.SessionInternalUrlBase + #9‘{WebApplication.SessionInternalUrlBase}‘); IWMemo1.Lines.Add(WebApplication.SessionUrlBase + #9‘{WebApplication.SessionUrlBase}‘); IWMemo1.Lines.Add(WebApplication.UserCacheUrlBase + #9‘{WebApplication.UserCacheUrlBase}‘); IWMemo1.Lines.Add(WebApplication.ApplicationURL + #9‘{WebApplication.ApplicationURL}‘); IWMemo1.Lines.Add(WebApplication.ApplicationPath + #9‘{WebApplication.ApplicationPath}‘); IWMemo1.Lines.Add(WebApplication.ReferringURL + #9‘{WebApplication.ReferringURL}‘); IWMemo1.Lines.Add(WebApplication.UserCacheDir + #9‘{WebApplication.UserCacheDir}‘ + sLineBreak); IWMemo1.Lines.Add(TIWAppInfo.GetAppFullFileName + #9‘{TIWAppInfo.GetAppFullFileName}‘); IWMemo1.Lines.Add(TIWAppInfo.GetAppPath + #9‘{TIWAppInfo.GetAppPath}‘); IWMemo1.Lines.Add(TIWAppInfo.GetAppFileName + #9‘{TIWAppInfo.GetAppFileName}‘); IWMemo1.Lines.Add(TIWAppInfo.GetAppName + #9‘{TIWAppInfo.GetAppName}‘); IWMemo1.Lines.Add(TIWAppInfo.GetTempPath + #9‘{TIWAppInfo.GetTempPath}‘); IWMemo1.Lines.Add(TIWAppInfo.GetCurrentPath + #9‘{TIWAppInfo.GetCurrentPath}‘);end;{参考结果:-------------------------------------------------------}C:\Users\wy\Documents\RAD Studio\Projects\MyTest6\Win32\Debug\wwwroot\ {IWServerController.ContentPath}C:\Users\wy\AppData\Local\Temp\01a3ozdw6r\ {IWServerController.CacheDir}C:\Users\wy\Documents\RAD Studio\Projects\MyTest6\Win32\Debug\Templates\ {IWServerController.TemplateDir}/ {WebApplication.AppUrlBase}/$/ {WebApplication.InternalUrlBase}/$/ {WebApplication.SessionInternalUrlBase}/ {WebApplication.SessionUrlBase}/$/MyApp/0pnlkje0r4hi7j19tzrq30eq0k2i/ {WebApplication.UserCacheUrlBase}http://127.0.0.1:3126 {WebApplication.ApplicationURL}C:\Users\wy\Documents\RAD Studio\Projects\MyTest6\Win32\Debug\ {WebApplication.ApplicationPath}http://127.0.0.1:3126/$/start {WebApplication.ReferringURL}C:\Users\wy\AppData\Local\Temp\01a3ozdw6r\user\0pnlkje0r4hi7j19tzrq30eq0k2i\ {WebApplication.UserCacheDir}C:\Users\wy\Documents\RAD Studio\Projects\MyTest6\Win32\Debug\MyTest6.exe {TIWAppInfo.GetAppFullFileName}C:\Users\wy\Documents\RAD Studio\Projects\MyTest6\Win32\Debug\ {TIWAppInfo.GetAppPath}MyTest6.exe {TIWAppInfo.GetAppFileName}MyTest6 {TIWAppInfo.GetAppName}C:\Users\wy\AppData\Local\Temp\ {TIWAppInfo.GetTempPath}C:\Users\wy\Documents\RAD Studio\Projects\MyTest6\Win32\Debug\ {TIWAppInfo.GetCurrentPath}
使用 IntraWeb (30) - TIWAppInfo、TIWMimeTypes、TIWAppCache
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。