网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > DELPHI > 正文
用Delphi 6开发ASP上传组件详解
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
下载{$ArticleTitle}原创论文样式
它们,就象在ASP中一样,例如Request.TotalBytes。首先将原始表单数据读入到一个
OleViarians类型的tmpvar中,然后通过一个循环,将它转换为Delphi中的string格式,并存放
在FContentData中。
  接下来,通过查找换行符,解析出分隔符的内容和长度。然后在一个循环中,用AnalyFormData成
员函数一一解析出每个域。初始化工作就这样完成了。

  再看AnalyFormData函数的实现:

procedure Tupfile.AnalyFormData(content: string);
var
  pos1,pos2:integer;
  FormName,FormValue:string;
  isFile:boolean;
begin
  isFile := false;
  pos1 := instr(''name="'',content,1)+6;
  pos2 := instr(''"'',content,pos1);
  FormName := copy(content,pos1,pos2-pos1);

  //检查是否文件
  pos1 := instr(''filename="'',content,pos2+1);
  if pos1 <> 0 then
  begin
    isFile := true;
    pos1 := pos1 + 10;
    pos2 := instr(''"'',content,pos1);
    FFilename := copy(content,pos1,pos2-pos1);
  end;

  pos1 := instr(#13#10#13#10,content,pos2+1)+4;
  FormValue := copy(content,pos1,length(content)-pos1);

  if isfile then
  begin
    FFileData := FormValue;
    //查找文件类型信息
    pos2 := instr(''Content-Type: '',content,pos2+1);
    if pos2 <> 0 then
    begin
      pos2 := pos2 + 14;
      FFileType := copy(content,pos2,pos1-4-pos2);
    end;
  end
  else
  begin
  FFormInfo.add(FormName+''=''+FormValue);
  end;
end;

  如注释中所表达的,AnalyFormData提取原始数据中的域。如果是域是文件类型,则将文件类型和
文件数据分别放入FFileType和FFileData中。如果是其它类型,则将名称和值放入一个TStringlist
类型的FFormInfo中。FFormInfo中维护着除文件类型外的所有域的信息,以“名称=值”的格式存放。
  
function Tupfile.Get_Form(Formname: OleVariant): OleVariant;
begin
    Result := FFormInfo.Values[Formname];
end;

  这个函数返回域的值。只需要简单地调用FFormInfo的values方法,就可以得到相应的值。这是
在Tstringlist类内部实现的。

function Tupfile.Get_FileName: OleVariant;
begin
  Result := ExtractFileName(FFileName);
end;


function Tupfile.Get_FileSize: Integer;
begin
  Result := length(FFileData);
end;

function Tupfile.Get_FileData: OleVariant;
var
  i:integer;
begin
  Result := VarArrayCreate( [0,length(FFileData)], varByte );
  for i := 0 to length(FFileData)-1 do
  begin
    Result[i] := Byte(FFileData[i+1]);
  end;
end;

  这三个函数分别返回文件的名称、大小、数据。要注意的是,在返回文件数据时,必须进行相应的转
换,将Delphi中的string类型转换为OleVariant类型。
  
procedure Tupfile.FileSaveAs(Filename: OleVariant);
var
  fsout:TFileStream;
  i:integer;
  afile:file of b
  • 下一篇资讯: Delphi控制Excel2000心得
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号