有時候用戶會希望把文件例如 jpg、pdf 等等上傳到系統中,作為對電腦數據的依據,這次聊聊怎麼上傳檔案。
上傳檔案基本有兩種方式,一是以檔案模式上傳到 file server ,二是以 Binary 模式寫到數據庫中,各有長短。前者需要另建 file server,也就是需要額外的支出,但由於是以文件是以檔案格式儲存,後台直接用 Windows 的檔案總管就可以打開;後者則把文件寫到原有數據庫中,不必另購,但這會導致數據庫體積變大,增加了備份時間和對硬盤空間的要求,而且由於是以 binary 形式儲存,需要另外加工還原成檔案才能使用。沒有最好的方案,只有最適合的方案,各適其適。就個人經驗所限,這次只能聊聊怎麼寫到數據庫中了。
在 PB 裏,用以儲存 Binary 的變量類型叫 Blob(Binary Large Object),可以儲存 word, excel, email 和圖片之類的東西,把它們轉化成 Binary 後就可以寫到變量中,再更新到數據庫了。
上傳步驟如下:
1. 數據中建立一個 varbinary(max) 的欄位
2. PB 中定義 Blob 變量
Blob lblob_file
3. 以 FileReadEx() 把檔案放到 Blob 中
FileReadEx(li_filenum, lblob_file)
4. 在表中插入新行
5. 在 PB 以 UpdateBlob 把 Blob 寫到 varbinary(max) 的欄位中
寫到數據庫中的檔案長這樣,我個人會把檔案類型也存進去,這有助未來可以知道應該用哪程式來開啓檔案。