Enviar Arquivo .zip para FTP

05/11/2010

0

Olá A Todos,   Quero enviar um arquivo backup.zip para o FTP. A Principio até estou conseguindo enviar, porem quando pego o arquivo .zip no ftp ele está corrompido.   Segue a rotina,   procedure TfrmBackup.BitBtn1Click(Sender: TObject);
var
DataBase, sSQL : String;
mensagem, sNomeArq,  Arquivo, NomeFantasia, sNomeZip  : String;
Result : Boolean;
begin
try
 Screen.Cursor := crSQLWait;
 Application.ProcessMessages;
 NomeFantasia := DMCadastro.PesqSql('SELECT FANTASIA RETORNO FROM EMPRESA WHERE CODEMPRESA = ' + IntToStr(CodEmpresa));  sNomeArq :='BKDBSCI' + StringReplace(NomeFantasia,' ','-',[rfReplaceAll]) +  FormatDateTime('dd-mm-yy-hh-nn-ss', Now);
 Arquivo := edtCaminho.Text + '\' + sNomeArq + edtTipo.Text;  DataBase := DMCadastro.SQLConexao.Params.Values['DataBase'];  sSQL := 'BACKUP DATABASE ' + DataBase + ' TO DISK=' +  QuotedStr(Arquivo);
 DMCadastro.ExecutaSQL(sSQL);  if ckCompactar.Checked then
  begin
    sNomeZip := edtCaminho.Text + '\' + sNomeArq + '.zip';      if FileExists('C:\Program Files\WinRAR\winrar.exe') then
       WinExec( PChar('"C:\Program Files\WinRAR\winrar.exe" e ' + sNomeZip + ' ' + Arquivo),  SW_SHOWNOACTIVATE)
        else
         if FileExists('C:\Arquivos de Programas\WinRAR\winrar.exe') then
           WinExec( PChar('"C:\Arquivos de Programas\WinRAR\winrar.exe" a ' + sNomeZip + ' ' + Arquivo),  SW_SHOWNOACTIVATE)
             else
              if FileExists('C:\Program Files (x86)\WinRAR\winrar.exe') then
                WinExec( PChar('C:\Program Files (x86)\WinRAR\winrar.exe a ' + sNomeZip + ' ' + Arquivo),  SW_SHOWNOACTIVATE);
 if ckSuporte.Checked then
  begin
   while IsFileInUse(sNomeZip) do
    Result := False;
    try
        IdFTP.Host := 'host';
        IdFTP.Username := 'username';
        IdFTP.Password := 'senha';
        IdFTP.Port := 21;
        IdFTP.TransferType := ftASCII;         IdFTP.Connect();
        IdFTP.ChangeDir('public_html');
        IdFTP.ChangeDir('Clientes');
        IdFTP.ChangeDir('BACKUPS');         IdFTP.Put(sNomeZip, sNomeArq + '.zip');
    finally
       IdFTP.Disconnect;
    end;
  end;   end;
 mensagem := 'Cópia de Segurança efetuada com sucesso.';
 Application.MessageBox(PChar(Mensagem),'Atenção!', mrNone + MB_ICONINFORMATION);
 Screen.Cursor := crDefault; except
 Screen.Cursor := crDefault;
 mensagem := 'Ocorreu um erro durante a cópia de segurança.';
 Application.MessageBox(PChar(Mensagem),'Atenção!', mrNone + MB_ICONERROR);
end;   Se alguem puder ajudar agradeço.
Carlos Júnior

Carlos Júnior

Responder

Post mais votado

05/11/2010

sempre fiz esse tipo de transferência em modo binário, nunca em ASCII.


IdFTP.TransferType := ftASCII; -- troque para binário ftBinary


Emerson Nascimento

Emerson Nascimento
Responder

Mais Posts

08/11/2010

Carlos Júnior

é isso mesmo,   Obrigado,
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar