2011-10-10 87 views
0

我有一個系統,用戶可以通過該系統通過FTP服務器或通過html表單上傳CSV文件。在我的結尾,腳本輪詢上傳目錄並處理找到的新文件。一些用戶將通過從Excel中導出來創建CSV,而其他用戶則可以用自己的腳本以編程方式創建它。如何驗證上傳文件是否完整

我目前的擔憂是:我如何100%確定我的處理腳本所作用的文件是完整的 - 換句話說,它不是一個部分文件(正在進行,上傳失敗等)?

如果文件格式是更結構化的東西,比如XML,通過檢查XML結構是否有效(即:關閉標籤),我會100%確信文件已完成。

有一個很好的方式,以確保上傳CSV文件是完整的,不負擔&迷惑少技術用戶誰是簡單地上傳從電子表格程序導出的文件(即:提供的文件內容的MD5會超越他們)。

回答

1

設計在過去的CSV文件格式時,我總是添加頁眉和頁腳行,如下所示:

id,one,two,three,four,five,six 
10,1,2,3,4,5,6 
11,1,2,3,4,5,6 
12,1,2,3,4,5,6 
13,1,2,3,4,5,6 
14,1,2,3,4,5,6 
FOOTER,5 

大多數CSV文件格式有一個頭標記列,頁腳的目的是指示文件已完成。頁腳包含簡單的行數,在循環瀏覽文件內容時很容易審計。用戶不太複雜。

+0

我認爲這可能是最好的方法,對最終用戶來說相當簡單。 – rcourtna

0

只要上傳文件的文件大小與原始文件的文件大小相匹配,就可以進行交叉檢查。

+0

這對於通過html + php表單上傳的文件來說可能有點簡單,因爲我可以訪問原始文件屬性。但是,我不知道如何通過FTP上傳文件來做到這一點。 – rcourtna

+0

是的。您應該能夠在上傳初始化時將服務器保存信息(可能是數據庫)(filename,id,filesize)當您的endcript驗證並轉換時,使其從數據庫中獲取詳細信息並根據文件檢查以進行驗證。 –