Jump to content
Sign in to follow this  
NeuroToxic

Problem with FTP.au3 and _FTPDelDir()

Recommended Posts

Hi all.

Sorry for my bad english, I'm french.

I have a problem with the FTPDelDir() of FTP.au3 UDF of Wouter.

All other functions works properly.

I have a FTP server with one dir and in this dir, several files.

This dir is named : "exemple"

When I use the FTPDelDir(), this dir is not deleled.

The code :

$server = 'my_host'
$username = 'my_user_name'
$pass = 'my_pass'

$Open = _FTPOpen('MyFTP Control')
$Conn = _FTPConnect($Open, $server, $username, $pass)
$Ftpd = _FtpDelDir($Conn, 'exemple')
$Ftpc = _FTPClose($Open)

I try too, with the dir "exemple" but Without file in it. It still does not work

How, this function works ?

thank you

Share this post


Link to post
Share on other sites

On my ftp server any time I create a new file or folder the default permissions are set to 000 and I have to chmod to 744 or 777 so I can delete the file.

Share this post


Link to post
Share on other sites

I have change my code with the "DllOpen" but it still does not work

$server = 'my_host'
$username = 'my_user_name'
$pass = 'my_pass'

$dllhandle = DllOpen('wininet.dll')
$Open = _FTPOpen('MyFTP Control')
$Conn = _FTPConnect($Open, $server, $username, $pass)
$Ftpd = _FtpDelDir($Conn, 'exemple')
$Ftpc = _FTPClose($Open)
DllClose($dllhandle)

Share this post


Link to post
Share on other sites

When the directory is empty, the function FTPDelDir() works, otherwise.

Then I try to make a FTPDelDirRecurse() but I have a problem in my script, I don't understand why it don't works.

Can you look my code ?

The code :

[autoit]#include "ftp3.au3"

$server = 'my_ftp_server'

$username = 'my_username'

$pass = 'my_password'

$ftp_main_dir = '/exemple/'

$ftp_file_mask = '*.*'

$dllhandle = DllOpen('wininet.dll')

$Open = _FTPOpen('MyFTP Control')

If @error Then MsgBox(0, "error", "Open")

$Conn = _FTPConnect($Open, $server, $username, $pass)

If @error Then MsgBox(0, "error", "Connect")

FTPDelDirRecurse($ftp_main_dir)

_FTPClose($Open)

DllClose($dllhandle)

Func FTPDelDirRecurse($ftp_dir)

Dim $Handle

Dim $DllRect

Local $FileInfo = _FtpFileFindFirst($Conn, $ftp_dir & $ftp_file_mask, $Handle, $DllRect)

If $FileInfo[0] Then

Do

;~ If current is directory

If $FileInfo[1] == 16 And $FileInfo[10] <> "." And $FileInfo[10] <> ".." Then ; dir attrib = 16

MsgBox(0, "Current dir", $FileInfo[10])

Local $i = $ftp_dir & $FileInfo[10] & "/"

FTPDelDirRecurse($i)

EndIf

;~ If current is file

If $FileInfo[1] == 128 Then ; file attrib = 128

MsgBox(0, "Current file", $FileInfo[10])

_FTPDelFile($Conn, $ftp_dir & $FileInfo[10])

EndIf

$FileInfo = _FtpFileFindNext($Handle, $DllRect)

Until Not $FileInfo[0]

EndIf

_FtpFileFindClose($Handle, $DllRect)

EndFunc ;==> FTPDelDirRecurse

Share this post


Link to post
Share on other sites

and the ftp3.au3 UDF :

;===============================================================================
;
; Function Name:    _FTPGetFileSize()
; Description:      Gets filesize of a file on the FTP server.
; Parameter(s):     $l_FTPSession   - The Long from _FTPConnect()
;                   $s_FileName     - The file name.
; Requirement(s):   DllCall, wininet.dll
; Return Value(s):  On Success - 1
;                   On Failure - 0
; Author(s):        J.o.a.c.h.i.m. d.e. K.o.n.i.n.g.
;
;===============================================================================

Func _FTPGetFileSize($l_FTPSession, $s_FileName)

    Local $ai_FTPGetSizeHandle = DllCall('wininet.dll', 'int', 'FtpOpenFile', 'long', $l_FTPSession, 'str', $s_FileName, 'long', 0x80000000, 'long', 0x04000002, 'long', 0)
    Local $ai_FTPGetFileSize = DllCall('wininet.dll', 'int', 'FtpGetFileSize', 'long', $ai_FTPGetSizeHandle[0])
    If @error OR $ai_FTPGetFileSize[0] = 0 Then
        SetError(-1)
        Return 0
    EndIf
    DllCall('wininet.dll', 'int', 'InternetCloseHandle', 'str', $l_FTPSession)

    Return $ai_FTPGetFileSize[0]
    
EndFunc ;==> _FTPGetFileSize()

;===============================================================================
Look here

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...