用datasnap下载文件回来后,再处理时提示禁止访问
本帖最后由 ldjssoft 于 2012-10-23 00:39:31 编辑 用datasnap下载文件一个jpg图片回来后,显示在image里面,在再上传回去时,报错提示“另一个程序正在使用此文件,进程无法访问”,连直接在文件夹里双击都不能打开这个图片,非得把我这个程序给关了,这个图片才能正常双击打开。 求助如何解决。
另外下载后,服务器上的那个文件也会进入死锁状态。代码如下请大家帮我看看是什么原因。
procedure TDtM.DownFile(fsName,FileMl,SaveMl: string;savefile:String='');
const
BufSize = $F000;
var
Stream, FS: TStream;
MyMemStream:TMemoryStream;
Buffer: TBytes;
ReadCount: Integer;
begin
if savefile='' then
savefile:=SaveMl+ExtractFileName(fsName); //FileMl服务器上文件目录,保存到本地目录 SaveMl
try
Stream := aiapp.DownLoadFile(fsName,FileMl);
FS := TMemoryStream.Create;
MyMemStream:=TMemoryStream.Create;
try
if Stream.Size = -1 then // 大小未知则一直读取到没有数据为止
begin
SetLength(Buffer, BufSize);
repeat
ReadCount := Stream.Read(Buffer[0], BufSize);
if ReadCount > 0 then
FS.WriteBuffer(Buffer[0], ReadCount);
if ReadCount < BufSize then
break;
until ReadCount < BufSize;
end
else // 大小已知则直接复制数据
FS.CopyFrom(Stream, 0);
MyMemStream.LoadFromStream(FS);
MyMemStream.SaveToFile(savefile);
// showmessage('下载成功.');
finally
FS.free;
MyMemStream.Free;
end;
finally
end;
end;
[解决办法]
谢谢。虽然根本看不懂 !!