FTP-Datei hochladen (ftp.upload)
Deklaration
Upload_erfolgreich, Uploadinformationen = ftp.upload(Lokaler_Dateipfad, URL [, Verbindungs-Timeout_in_Sekunden, Fortsetzungsmodus, Block-Callback, Puffergröße ])
Parameter
- Lokaler_Dateipfad
Text, lokaler Dateipfad - URL
Text, Zieladresse für den Upload; Benutzername und Passwort sind in diesem Parameter enthalten - Verbindungs-Timeout_in_Sekunden
Reelle Zahl, optionaler Parameter, Verbindungs-Timeout in Sekunden, standardmäßig 10 - Fortsetzungsmodus
Boolescher Wert, optionaler Parameter, ob die Fortsetzung unterbrochener Uploads unterstützt werden soll; true bedeutet ja, false bedeutet nein, standardmäßig false - Block-Callback
Funktion, optionaler Parameter; wird nach dem Upload jedes Blocks einmal aufgerufen, standardmäßig eine leere Funktion
Der erste Parameter des Block-Callbacks enthält die aktuellen Uploadinformationen. Gibt der Callback true zurück, wird dieser Upload unterbrochen - Puffergröße
Ganzzahl, optionaler Parameter, Puffergröße in Bytes, standardmäßig automatisch optimale Konfiguration
Rückgabewerte
- Upload_erfolgreich
Boolescher Wert, ob die Verbindung erfolgreich war - Uploadinformationen
Tabelle oder Text; bei erfolgreicher Verbindung eine Tabelle mit Uploadinformationen, andernfalls eine Textbeschreibung des Verbindungsfehlers
Hinweise
-- Die Struktur der Uploadinformationen im zweiten Rückgabewert sieht wie folgt aus
{
resource_size = Gesamtzahl der Bytes der lokalen Datei,
start_pos = Startposition dieses Uploads in der lokalen Datei,
size_upload = Anzahl der Bytes dieses Uploads,
speed_upload = Geschwindigkeit dieses Uploads (in Bytes/Sekunde),
}
Diese Funktion eignet sich für große Datei-Uploads; das Stoppen des Skripts während der Übertragung kann langsam sein.
Diese Funktion kann die Ausführung abgeben; vor ihrer Rückgabe können andere Threads ausgeführt werden.
Einfaches Beispiel
Benutzername und Passwort werden in die URL geschrieben; das genaue URL-Format ist wie folgt (Parameter in eckigen Klammern sind optional).
ftp://[Benutzername:Passwort@]Adresse[:Port]/Pfad
Die Zeichen
@,:und/in Benutzername oder Passwort können jeweils mit%40,%3Aund%2Fescaped werden (andere in URLs unzulässige Zeichen können per URL-Prozentcodierung codiert werden). Beispiel mit Benutzernamehavonzund Passwort11@@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
Komplexes Beispiel
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
Hinweis: Der obige Code verwendet die Funktionen sys.alert und sys.toast aus anderen Kapiteln.