Téléverser un fichier par FTP (ftp.upload)
Déclaration
succès du téléversement, informations de téléversement = ftp.upload(chemin local, URL [, délai de connexion en secondes, reprise, fonction de rappel par bloc, taille du tampon])
Paramètres
- Chemin local
Type texte, chemin du fichier local - URL
Type texte, adresse distante de destination ; le compte et le mot de passe sont inclus dans ce paramètre - 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 ;trueoui,falsenon,falsepar défaut - Fonction de rappel par bloc
Type fonction, paramètre facultatif, rappel exécuté après chaque bloc téléversé, fonction vide par défaut Le premier paramètre contient les informations du téléversement ; un retourtrueinterrompt le téléversement - 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éversement
Type booléen, indique si la connexion a réussi - Informations de téléversement
Type table ou texte ; en cas de connexion réussie, informations du téléversement sous forme de table, sinon description textuelle de l’échec de connexion
Description
-- Structure des informations de téléversement du deuxième retour
{
resource_size = nombre total d’octets du fichier local,
start_pos = position de départ de ce téléversement dans le fichier local,
size_upload = nombre d’octets téléversés,
speed_upload = vitesse de téléversement (octets/seconde),
}
Cette fonction convient aux téléversements 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,%3Aet%2F(les autres caractères illégaux dans une URL peuvent utiliser l’encodage en pourcentage). Par exemple, avec le comptehavonzet le mot de passe11@@22:
local done, info = ftp.upload("/var/mobile/1.zip", "ftp://havonz:11%40%[email protected]/1.zip")
if (done) then
sys.alert("上传完成")
else
sys.alert("连接失败:"..info)
end
Exemple complexe
local done, info = ftp.upload("/var/mobile/1.zip", "ftp://havonz:[email protected]/1.zip", 10, true, function(binfo)
local percent = math.floor(((binfo.start_pos + binfo.size_upload) / binfo.resource_size) * 100)
sys.toast("上传进度 "..percent.."%")
end, 4096 * 1024)
--
if (done) then
if (info.start_pos + info.size_upload < info.resource_size) then
sys.alert(
"上传中断\n本次上传 "..info.size_upload.." 字节"
.."\n从第 "..info.start_pos.." 字节开始上传"
.."\n平均速度为 "..math.floor(info.speed_upload/1024).." kB/s"
.."\n还有剩 "..(info.resource_size - (info.start_pos + info.size_upload)).." 字节"
)
else
sys.alert(
"上传完成\n本次上传 "..info.size_upload.." 字节"
.."\n从第 "..info.start_pos.." 字节开始上传"
.."\n平均速度为 "..math.floor(info.speed_upload/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.