function TbsFileBackUpForm.DownloadFile(
aurl: string): string;
var
MemoryStream: TMemoryStream;
URL, SavePath, sFileName,sFileType: string;
SaveDialog: TSaveDialog;
iPos: Integer;
DMHttp: TIdHTTP;
// SSLIO: TIdSSLIOHandlerSocketOpenSSL;
begin
Result := '';
if aurl = '' then Exit;
URL := '';
SavePath := '';
sFileName := '';
sFileType := '';
iPos := 0;
MemoryStream := TMemoryStream.Create;
SaveDialog := TSaveDialog.Create(nil);
DMHttp := TIdHttp.Create(nil);
// DMHttp.ProtocolVersion := pv1_1;
// DMHttp.HandleRedirects := True;
// SSLIO := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
// SSLIO.SSLOptions.Method:=sslvTLSv1;
// SSLIO.SSLOptions.Mode := sslmClient ;
try
URL :=aurl;
Screen.Cursor := crHourGlass;
try
DMHttp.Get(URL, MemoryStream);
MemoryStream.Position := 0;
except
raise Exception.Create('下载文件失败');
end;
sFileName := DMHttp.Response.RawHeaders.Values['Content-Disposition'];
Delete(sFileName, 1, Pos('filename=', sFileName) + Length('filename=') - 1);
SaveDialog.FileName := sFileName; //文件名
sFileType := sFileName;
iPos := Pos('.', sFileType);
if iPos = 0 then
iPos := Length(sFileType) + 1;
// Delete(sFileType, 1, Length(LeftBStr(sFileType, iPos - 1)) + 1);
SaveDialog.Filter := sFileType; //类型
if SaveDialog.Execute then
SavePath := SaveDialog.FileName
else
Exit;
MemoryStream.SaveToFile(SavePath);
Result := SavePath;
finally
FreeAndNil(MemoryStream);
FreeAndNil(SaveDialog);
FreeAndNil(DMHttp);
Screen.Cursor := crDefault;
end;
ShowMessage('文件下载成功');
end;