Aller au contenu principal

Télécharger un fichier par FTP (ftp.download)

Déclaration

succès du téléchargement, informations de téléchargement = ftp.download(URL, chemin local [, délai de connexion en secondes, reprise, fonction de rappel par bloc, taille du tampon])

Paramètres

  • URL
    Type texte, adresse du fichier distant ; le compte et le mot de passe sont inclus dans ce paramètre
  • Chemin local
    Type texte, chemin local où enregistrer le fichier
  • Délai de connexion en secondes
    Type réel, paramètre facultatif, délai de connexion en secondes, 10 par défaut
  • Reprise
    Type booléen, paramètre facultatif, indique si la reprise est prise en charge ; true oui, false non, false par défaut
  • Fonction de rappel par bloc
    Type fonction, paramètre facultatif, rappel exécuté après chaque bloc téléchargé, fonction vide par défaut Le premier paramètre contient les informations du téléchargement ; un retour true interrompt le téléchargement
  • Taille du tampon
    Type entier, paramètre facultatif, taille du tampon en octets, configuration optimale automatique par défaut

Valeur de retour

  • Succès du téléchargement
    Type booléen, indique si la connexion a réussi
  • Informations de téléchargement
    Type table ou texte ; en cas de connexion réussie, informations du téléchargement sous forme de table, sinon description textuelle de l’échec de connexion

Description

-- Structure des informations de téléchargement du deuxième retour
{
resource_size = nombre total d’octets de la ressource distante,
start_pos = position de départ de ce téléchargement dans la ressource,
size_download = nombre d’octets téléchargés,
speed_download = vitesse de téléchargement (octets/seconde),
}

Cette fonction convient aux téléchargements de gros fichiers ; l’arrêt du script pendant le transfert peut être lent. Cette fonction peut céder l’exécution ; avant son retour, d’autres threads peuvent avoir l’occasion de s’exécuter.

Exemple simple

Le compte et le mot de passe sont écrits dans l’URL, dont le format est le suivant (les éléments entre crochets sont facultatifs)

ftp://[compte:mot de passe@]adresse[:port]/chemin

Les caractères @, : et / dans le compte ou le mot de passe peuvent être échappés respectivement par %40, %3A et %2F (les autres caractères illégaux dans une URL peuvent utiliser l’encodage en pourcentage). Par exemple, avec le compte havonz et le mot de passe 11@@22 :

local done, info = ftp.download("ftp://havonz:11%40%[email protected]/1.zip", "/var/mobile/1.zip")
if (done) then
sys.alert("下载完成")
else
sys.alert("连接失败:"..info)
end

Exemple complexe

local done, info = ftp.download("ftp://havonz:[email protected]/1.zip", "/var/mobile/1.zip", 10, true, function(binfo)
local percent = math.floor(((binfo.start_pos + binfo.size_download) / binfo.resource_size) * 100)
sys.toast("下载进度 "..percent.."%")
end, 4096 * 1024)
--
if (done) then
if (info.start_pos + info.size_download < info.resource_size) then
sys.alert(
"下载中断\n本次下载 "..info.size_download.." 字节"
.."\n从第 "..info.start_pos.." 字节开始下载"
.."\n平均速度为 "..math.floor(info.speed_download/1024).." kB/s"
.."\n还有剩 "..(info.resource_size - (info.start_pos + info.size_download)).." 字节"
)
else
sys.alert(
"下载完成\n本次下载 "..info.size_download.." 字节"
.."\n从第 "..info.start_pos.." 字节开始下载"
.."\n平均速度为 "..math.floor(info.speed_download/1024).." kB/s"
)
end
else
sys.alert("连接失败:"..info)
end

Remarque : le code ci-dessus utilise les fonctions hors de ce chapitre sys.alert et sys.toast.