文档章节

使用 IntraWeb (30) - TIWAppInfo、TIWMimeTypes、TIWAppCache

涂孟超
 涂孟超
发布于 2014/09/26 15:35
字数 1172
阅读 13
收藏 0
点赞 0
评论 0

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: string
class function GetAppFileName: string
class function GetAppLogFileName: string
class function GetAppPath: string
class function GetAppName: string
class function GetSystemPath: string
class function GetTempPath: string
class function GetCurrentPath: string
class function GetComputerName: string
class function GetFileInfo(const aFileName: string; aFileInfo: TFileInfo): string
class 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/pdf
class function GetAsString(const aMimeType: TMimeType): string   //TIWMimeTypes.GetAsString(mtPDF) 结果也是 application/pdf
class 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): string
class 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}


本文转载自:http://www.cnblogs.com/del/p/3803687.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
界面控件包TMS IntraWeb Component Pack Pro Script Edition发布v5.8.8.1

TMS IntraWeb Component Pack Pro Script Edition允许从Delphi IDE直接在IntraWeb表格上编辑设计期间的网页。IntraWeb的TMS控件允许以RAD方法用Delphi进行网页应用程序的开发。这使得网页开发...

Harriet666
2017/10/20
0
0
使用delphi 开发 web(一) webbroke 简介

从delphi 3 开始,就可以支持使用webbroke 技术开发基于web 服务器。当时主要是支持CGI和ISAPI. CGI 其实就是一个类似控制台的可执行程序,将其放入web 服务器的可执行目录,每次web 服务器调...

xalion
2012/01/04
0
0
Intraweb 开发 的 网站 发布 部署

将Stand Alone App变为ISAPI Dll只需两步,一是将工程文件中的program改成library,二是将uses里的IWInitStandAlone改成IWInitISAPI,没有该文件就自己加上。 然后将dll文件考入你的默认web站...

vga
2014/03/01
0
0
wxWidgets编译运行 helloworld

一开始本人使用的是 wx3.1.0 编译库成功,编译helloworld遇到如下问题 ------------- Build: Debug in test1 (compiler: GNU GCC Compiler)--------------- windres.exe -IF:wxWidgets-3.1.......

涵涵思密达
2016/06/11
373
0
mongodb 3.0.2与wiredTiger存储引擎安装测试

mongodb3.0版本,除了之前默认的MMAP存储引擎,还新推出了wiredTiger存储引擎。 据官网测试报告称,mongodb 3.0版本使用wiredTiger存储引擎后,写性能能够提高7-10倍,数据压缩30%-80%,运维...

yumushui991
2015/10/27
0
0
Oracle group by 用法实例详解

1. Group by的语法 Select [filed1,fild2,]聚合函数(filed), [Grouping(filed),] [Grouping_id(filed1,filed2,…)] From tablename Where condition [Group by {rollup|cube}(filed,filed......

rudy_gao
2013/10/25
0
0
初试连接阿里云IoT套件,教你一小时完成接入

1. 创建设备。 点击“查看设备”,点击“前往管理”点击添加设备 从平台上获取相关的信息: ProductKey:a1BekCto7zj 主机,端口:a1BekCto7zj.iot-as-mqtt.cn-shanghai.aliyuncs.com:1883 D...

传感云
06/24
0
0
Linux下的一些简单网络配置命令介绍

1、 ifconfig可以使用ifconfig命令来配置并查看网络接口的配置情况。 例如: (1) 配置eth0的IP地址, 同时激活该设备。 ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up (2) 配置e...

红薯
2009/05/07
139
0
理解load average和cpu使用率

cpu使用率和load average是衡量linux系统压力的两个重要指标。使用# top 命令可以查看到相关的值。 要理解这两个概念,首先要从cpu的时间片说起。 大家都知道,我们现在所使用的Windows、Lin...

潘驴
2017/07/06
0
0
Linux下命令配置网络

Linux下命令配置网络 1. ifconfig 可以使用ifconfig 命令来配置并查看网络接口的配置情况。 例如: (1) 配置eth0 的IP 地址,同时激活该设备。 #ifconfig eth0 192.168.1.10 netmask 255.25...

yangleitse
2010/10/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

实现异步有哪些方法

有哪些方法可以实现异步呢? 方式一:java 线程池 示例: @Test public final void test_ThreadPool() throws InterruptedException { ScheduledThreadPoolExecutor scheduledThre......

黄威
今天
0
0
linux服务器修改mtu值优化cpu

一、jumbo frames 相关 1、什么是jumbo frames Jumbo frames 是指比标准Ethernet Frames长的frame,即比1518/1522 bit大的frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;...

六库科技
今天
0
0
牛客网刷题

1. 二维数组中的查找(难度:易) 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入...

大不了敲一辈子代码
今天
0
0
linux系统的任务计划、服务管理

linux任务计划cron 在linux下,有时候要在我们不在的时候执行一项命令,或启动一个脚本,可以使用任务计划cron功能。 任务计划要用crontab命令完成 选项: -u 指定某个用户,不加-u表示当前用...

黄昏残影
昨天
0
0
设计模式:单例模式

单例模式的定义是确保某个类在任何情况下都只有一个实例,并且需要提供一个全局的访问点供调用者访问该实例的一种模式。 实现以上模式基于以下必须遵守的两点: 1.构造方法私有化 2.提供一个...

人觉非常君
昨天
0
0
《Linux Perf Master》Edition 0.4 发布

在线阅读:https://riboseyim.gitbook.io/perf 在线阅读:https://www.gitbook.com/book/riboseyim/linux-perf-master/details 百度网盘【pdf、mobi、ePub】:https://pan.baidu.com/s/1C20T......

RiboseYim
昨天
1
0
conda 换源

https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/conda config --add channels https://mir......

阿豪boy
昨天
1
0
Confluence 6 安装补丁类文件

Atlassian 支持或者 Atlassian 缺陷修复小组可能针对有一些关键问题会提供补丁来解决这些问题,但是这些问题还没有放到下一个更新版本中。这些问题将会使用 Class 类文件同时在官方 Jira bug...

honeymose
昨天
0
0
非常实用的IDEA插件之总结

1、Alibaba Java Coding Guidelines 经过247天的持续研发,阿里巴巴于10月14日在杭州云栖大会上,正式发布众所期待的《阿里巴巴Java开发规约》扫描插件!该插件由阿里巴巴P3C项目组研发。P3C...

Gibbons
昨天
1
0
Tomcat介绍,安装jdk,安装tomcat,配置Tomcat监听80端口

Tomcat介绍 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。 java程序写的网站用tomcat+jdk来运行...

TaoXu
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部