filefunc.pas
/// <author>cxg 2020-9-29</author>
unit filefunc;
interface
uses
Classes, ulog, serial, uGlobal, SysUtils;
function downfile(const params: RawByteString): RawByteString;
function upfile(const params: RawByteString): RawByteString;
implementation
function downfile(const params: RawByteString): RawByteString;
var
requ: TSerial;
filename: string;
fs: TFileStream;
begin
requ := TSerial.Create;
fs := TFileStream.Create(DownPath + filename, fmOpenRead or fmShareExclusive);
try
try
requ.loadFromRawByteString(params);
filename := requ.force('filename').AsString;
requ.clear;
requ.force('return').AsBoolean := true;
requ.force('file').AsStream := fs;
Result := requ.saveToRawByteString;
except
on e: Exception do
begin
requ.clear;
requ.force('return').AsBoolean := False;
requ.force('err').AsString := e.Message;
Result := requ.saveToRawByteString;
Log.WriteLog('filefunc.downfile ' + e.Message);
end;
end;
finally
requ.Free;
fs.Free;
end;
end;
function upfile(const params: RawByteString): RawByteString;
var
requ: TSerial;
filename: string;
ms: TStream;
begin
requ := TSerial.Create;
ms := TMemoryStream.Create;
try
try
requ.loadFromRawByteString(params);
filename := requ.force('filename').AsString;
ForceDirectories(UpPath);
ms := requ.force('file').AsStream;
TMemoryStream(ms).SaveToFile(UpPath + filename);
requ.clear;
requ.force('return').AsBoolean := true;
Result := requ.saveToRawByteString;
except
on e: Exception do
begin
requ.clear;
requ.force('return').AsBoolean := False;
Result := requ.saveToRawByteString;
Log.WriteLog('filefunc.upfile ' + e.Message);
end;
end;
finally
requ.Free;
ms.Free;
end;
end;
end.
本文来自博客园,作者:{咏南中间件},转载请注明原文链接:https://www.cnblogs.com/hnxxcxg/p/13751283.html

浙公网安备 33010602011771号