delphi下载文件,delphi从http服务器上下载文件

unit downloadTest;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,UrlMon;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
  //文件下载
function DownloadFile(Source, Dest: string): Boolean;
begin 
  try 
    Result := UrlDownloadToFile(nil, PChar(source), PChar(Dest), 0, nil) = 0; 
    except 
      Result := False; 
    end; 
  end;

procedure TForm1.Button1Click(Sender: TObject);
var filedir,downloadUrl:string;
begin
    filedir :='D:\delphi\download\client.zip';
    downloadUrl :='http://download.pingan.com.cn/bank/client.zip';
    if  DownloadFile(downloadUrl,filedir) then
      showMessage('文件下载成功')
    else
      showMessage('文件下载失败');
end;

end.


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Delphi可以使用ADO(ActiveX Data Objects)来操作SQL Server服务器,包括文件上传和下载。通常情况下,上传和下载文件都是通过SQL Server的BLOB(Binary Large Object)数据类型来实现的。 在上传文件时,可以使用ADODB.Stream对象来将文件数据读入到BLOB字段中。下面是一个示例代码: var FS: TFileStream; Stream: TStream; BLOBStream: TStream; cn: TADOConnection; qry: TADOQuery; chunkSize, bufSize, bytesRead: LongInt; buffer: PByte; filePath: string; begin // 创建连接 cn := TADOConnection.Create(nil); cn.ConnectionString := 'Provider=SQLOLEDB;Data Source=YourServerName;Initial Catalog=YourDatabaseName;Integrated Security=SSPI;'; cn.LoginPrompt := False; cn.Connected := True; // 创建查询 qry := TADOQuery.Create(nil); qry.Connection := cn; qry.SQL.Text := 'INSERT INTO YourTableName (FileName, FileData) VALUES (:FileName, :FileData)'; qry.Parameters.ParseSQL(qry.SQL.Text, True); // 打开文件 filePath := 'C:\YourFilePath\YourFileName.ext'; FS := TFileStream.Create(filePath, fmOpenRead or fmShareDenyWrite); // 读取数据到BLOB字段中 chunkSize := 4096; // 每次上传的块大小 bufSize := chunkSize * SizeOf(Byte); buffer := AllocMem(bufSize); try Stream := FS; BLOBStream := qry.CreateBlobStream(qry.Parameters.ParamByName('FileData'), bmWrite); repeat bytesRead := Stream.Read(buffer^, bufSize); if bytesRead > 0 then BLOBStream.Write(buffer^, bytesRead); until bytesRead < bufSize; qry.Parameters.ParamByName('FileName').Value := ExtractFileName(filePath); qry.ExecSQL(); finally FreeMem(buffer); FS.Free; qry.Free; cn.Free; end; end; 在下载文件时,可以使用TStreamAdapter对象将BLOB字段中的数据读入到TFileStream对象中。下面是一个示例代码: var cn: TADOConnection; qry: TADOQuery; filePath: string; begin // 创建连接 cn := TADOConnection.Create(nil); cn.ConnectionString := 'Provider=SQLOLEDB;Data Source=YourServerName;Initial Catalog=YourDatabaseName;Integrated Security=SSPI;'; cn.LoginPrompt := False; cn.Connected := True; // 创建查询 qry := TADOQuery.Create(nil); qry.Connection := cn; qry.SQL.Text := 'SELECT FileData FROM YourTableName WHERE FileName = :FileName'; qry.Parameters.ParseSQL(qry.SQL.Text, True); qry.Parameters.ParamByName('FileName').Value := 'YourFileName.ext'; qry.Open(); // 写入文件 filePath := 'C:\YourFilePath\YourFileName.ext'; with TFileStream.Create(filePath, fmCreate) do try TStreamAdapter.Create(qry.CreateBlobStream(qry.FieldByName('FileData'), bmRead)).CopyTo(Self, 0); finally Free; end; end; 以上就是Delphi操作SQL Server服务器上传下载文件的基本步骤。注意,代码中使用的连接字符串、表名、字段名等需要替换成实际情况下的值。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值