Streaming upload by wput
一般 FTP 檔案的續傳設計, 是當檔案上傳到一半時斷線, 之後上傳可以將未上傳的部份再上傳, 不用重新將檔案整個重新上傳過. (示意圖如下)



目前作的監控系統有個功能是將監控觸發畫面錄下來上傳到 FTP或存入到SD卡中. 作法是將抓到的 MPEG4 Frame 存成檔案放在 RootFS(ramdisk) 之中. 不過我們這系統開機完 RootFS 空間剩下不多,如果要錄長時間的話會有容量上的問題. 如果使用上面存到單一檔案的話,空間一定會不足. 所以我們用的方法修正如下:


在本地端使用多個檔案來儲存 MPEG4 Frames, 目前是30個 Frame存成一個檔案, 本地檔案只要存好一個, 就馬上 Append 到 FTP 端的檔案(如上圖), 這樣一來, 只要網路頻寬足夠的話, 就不用擔心本機 Embedded System 空間是否足夠儲存.
回到第一段, 如果使用一般 FTP 的設定方法, 勢必是達不到我們目地的. 正常的 FTP 續傳 Local File 和 Remote File 都各只有一個, 流程如下:
回到第一段, 如果使用一般 FTP 的設定方法, 勢必是達不到我們目地的. 正常的 FTP 續傳 Local File 和 Remote File 都各只有一個, 流程如下:
- 看看 Remote File 是否存在, 如果存在就利用 SIZE 來取得 Remote File 的檔案大小, 如果不存在就產生一個同名的空檔案.
- 取得 Remote File 的檔案大小之後, 和本地的檔案相減, 計算還有多少檔案未上傳.
- 利用 REST 重設 Remote File 起始點之後, 將剩下的未傳輸檔案上傳.
- 看看 Remote File 是否存在, 如果存在就利用 SIZE 來取得 Remote File 的檔案大小, 如果不存在就產生一個空檔案, 名字要記下來.
- 將 Local File 第一個上傳上去, 利用 REST 來重新設定上傳起始點.
- 上傳完將剛上傳的 Local File 刪除.
- 重復 1-3, 直到所有檔案都上傳完畢.

0 意見:
張貼意見