FTP 檔案上傳 (ftp.upload)
聲明
上傳成敗, 上傳資訊 = ftp.upload(本地檔案路徑, URL [, 連接超時秒, 斷點續傳模式, 分塊回調函式, 緩衝區尺寸 ])
參數
- 本地檔案路徑
文字型,本地檔案路徑 - URL
文字型,需要上傳到的遠端地址,帳號及密碼被包含在這一參數中 - 連接超時秒
實數型,可選參數,連接超時時間,單位秒,預設 10 - 斷點續傳模式
布林型,可選參數,是否需要支援斷點續傳,是為 true,否為 false,預設 false - 分塊回調函式
函式型,可選參數,分塊回調函式,每上傳完一個分塊都會回調一次該函式,預設 空函式
分塊回調函式第一個參數為目前上傳的資訊,回調函式返回 true 則打斷這次上傳 - 緩衝區尺寸
整數型,可選參數,緩衝區大小位元組數,預設自動最優設定
回傳值
- 上傳成敗
布林型,連接是否成功 - 上傳資訊
表型 或 文字型,如果連接成功則返回表型上傳資訊,否則返回連接失敗原因文字描述
說明
-- 第二個返回值上傳信息結構如下
{
resource_size = 本地檔案總位元組數,
start_pos = 本次上傳從本地檔案的開始的位置,
size_upload = 本次上傳的位元組數,
speed_upload = 本次上傳的速度 (單位:位元組/秒) ,
}
該函式適合大檔案上傳,在傳輸的過程中停止腳本可能會緩慢
該函式可能會讓出,在其返回之前,其他 執行緒 可能會得到運行機會
簡單範例
帳號密碼寫在 URL 中,具體 URL 格式如下 (中括號內是可選參數)
ftp://[帳號:密碼@]地址[:連接埠]/路徑
帳號或密碼中包含
@、:、/這三個字元可分別用%40、%3A、%2F轉義(其他在 URL 中非法的字元可使用 URL 百分號編碼) 例如帳號havonz、密碼11@@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
複雜範例
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