我现在想向网页上面上传一个文件,文件的格式为word文件,中间有定义好的各种标签,在客户端的ocx上面插入了各项内容后,在保存的时候自动上传到服务器的网页上面,服务器上有一个程序,在受到request后,进行解析,然后变成相应的word文件保存起来!为了能够
定义两个变量保存文件名,全局变量
docfile:string;//创建、下载生成临时文件
docsave:string;//保存文件名,在编辑时也可上传,做法:由docfile复制到此文件,上传然后下载的时候用
temp:=downloadjsp+'?id='+tempID;//进行转换,否则pchar类型会出现空的错误
URLDownloadToFile(IUnknown(FDelphiControl.VCLComObject),
PChar(temp), PChar(docfile), 0, nil); oldfileinfo:=getfileinfo(docfile);//然后定义一个timer,时间间隔为3秒,timer的事件为
newfileinfo:longint;
//getfileinfo的功能为取文件大小
newfileinfo:=getfileinfo(docfile);
if oldfileinfo<>newfileinfo then
begin
oldfileinfo:=newfileinfo;
//为保证在编辑时仍可上传,复制文件,将复制件上传
copyfile(pchar(docfile),pchar(docsave),false);
upload(docsave);
end;
在upload函数中
procedure TOpenWordX.upload(const filename: WideString);
var
EncodedDataString: string;
PostData: OleVariant;
Headers: OleVariant;
I: Integer;
begin EncodedDataString:=
'fileid='+httpencode(downfileid)+'&filename='+httpencode(filename);
PostData := VarArrayCreate([0,
Length(EncodedDataString) - 1],
varByte);
for I := 1 to Length(EncodedDataString) do
PostData[I-1] := Ord(EncodedDataString[I]); TVarData(PostData).vType:= varArray ; Headers :='Content-Type:multipart/form-data' + #10#13; Web.Navigate(uploadjsp,
EmptyParam,
EmptyParam,
PostData,
Headers);
end;我总是觉得这个upload函数中有问题,但是不知道问题在什么地方,postdata应该是上传的内容,但是在各种各样的帮助文档上面对他的作用的说明都不一样,具体应该怎么运用?
还有就是在判断上传的时间上面应该也有问题,仅仅判断文件大小我觉得应该是错误的,有没有什么更好的办法?用户一旦保存了文档,文件的内容是应该改变的,这样可以避免上传的次数过多,但是现在的情况好像是oldfileinfo和newfileinfo好像总是不相等的!为什么会这样
定义两个变量保存文件名,全局变量
docfile:string;//创建、下载生成临时文件
docsave:string;//保存文件名,在编辑时也可上传,做法:由docfile复制到此文件,上传然后下载的时候用
temp:=downloadjsp+'?id='+tempID;//进行转换,否则pchar类型会出现空的错误
URLDownloadToFile(IUnknown(FDelphiControl.VCLComObject),
PChar(temp), PChar(docfile), 0, nil); oldfileinfo:=getfileinfo(docfile);//然后定义一个timer,时间间隔为3秒,timer的事件为
newfileinfo:longint;
//getfileinfo的功能为取文件大小
newfileinfo:=getfileinfo(docfile);
if oldfileinfo<>newfileinfo then
begin
oldfileinfo:=newfileinfo;
//为保证在编辑时仍可上传,复制文件,将复制件上传
copyfile(pchar(docfile),pchar(docsave),false);
upload(docsave);
end;
在upload函数中
procedure TOpenWordX.upload(const filename: WideString);
var
EncodedDataString: string;
PostData: OleVariant;
Headers: OleVariant;
I: Integer;
begin EncodedDataString:=
'fileid='+httpencode(downfileid)+'&filename='+httpencode(filename);
PostData := VarArrayCreate([0,
Length(EncodedDataString) - 1],
varByte);
for I := 1 to Length(EncodedDataString) do
PostData[I-1] := Ord(EncodedDataString[I]); TVarData(PostData).vType:= varArray ; Headers :='Content-Type:multipart/form-data' + #10#13; Web.Navigate(uploadjsp,
EmptyParam,
EmptyParam,
PostData,
Headers);
end;我总是觉得这个upload函数中有问题,但是不知道问题在什么地方,postdata应该是上传的内容,但是在各种各样的帮助文档上面对他的作用的说明都不一样,具体应该怎么运用?
还有就是在判断上传的时间上面应该也有问题,仅仅判断文件大小我觉得应该是错误的,有没有什么更好的办法?用户一旦保存了文档,文件的内容是应该改变的,这样可以避免上传的次数过多,但是现在的情况好像是oldfileinfo和newfileinfo好像总是不相等的!为什么会这样
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货