檔案儲存到資料庫中

2021-09-11 05:16:49 字數 1629 閱讀 4104

最近專案中遇到新問題,問題描述如下:

1)需求:應用後台每天定時讀取本地伺服器上傳的excel**,並進行解析。

2)背景:因為生產上部署兩台應用伺服器(負載均衡),excel放在nfs共享目錄中,這樣兩台伺服器都能讀取excel。為了防止excel被讀取兩次,所以**中每次讀完會加鎖,乙個應用讀完了,另乙個就不會再讀了。

3)問題:客戶說不能搭建nfs,只能應用各自去讀本地目錄。

4)方案: 現有3種方案。 方案1:操作員分別上傳excel到兩台伺服器指定目錄上。但這樣會使操作員每次傳兩個,有點麻煩 方案2:操作員僅上傳乙個目錄,然後rsync自動同步。 方案3:excel放到指定目錄,然後執行一段**,把檔案流儲存到資料庫中。 下面著重講下方案3.

1. 首先,資料庫建表

create table tb_excel(

id int primary key auto_increment,

name varchar(8),

excel longblob

);

2. 建立物件

3. excel轉成byte,並匯入資料庫

exceldao exceldao = new exceldao();

inputstream inputstream = getinputstreamfromfile(inputfilepath);

//input流轉成位元組陣列

byte inputbytes = tobytearray(inputstream);

//位元組陣列存入db

exceldao.add(new tbexcel(1, "julia", inputbytes));

public static inputstream getinputstreamfromfile(string inputfilepath) throws exception

public static byte tobytearray(inputstream input) throws ioexception

return output.tobytearray();

}

4. 以上已經完成excel的儲存,此時資料庫相當於乙個nfs共享空間了。後面應用如果想解析excel的話,就可以從資料庫中取出byte,並轉成excel了。

//從資料庫取出位元組陣列並轉成excel匯出

byte outputbytes = exceldao.select(1);

//位元組陣列轉input流

inputstream inputstream1 = new bytearrayinputstream(outputbytes);

outputfilefrominputstream(inputstream1, outputfilepath);

public static void outputfilefrominputstream(inputstream inputstream, string outputfilepath) throws ioexception

} catch (ioexception e1) finally

}

完成了。 **詳見 

參考了好幾個帖子,找不到了,侵刪啊,不好意思。

檔案儲存到資料庫中

最近開發乙個專案,涉及到將檔案儲存到資料庫中,在網上找到了例程,故貼出來,大家共享。下面介紹一下使用c 來完成此項任務。首先,介紹一下儲存檔案到資料庫中。將檔案儲存到資料庫中,實際上是將檔案轉換成二進位製流後,將二進位製流儲存到資料庫相應的字段中。在sql server中該字段的資料型別是image...

將檔案儲存到資料庫中 stream

在程式設計中我們常常會遇到 將檔案儲存到資料庫中 這樣乙個問題,雖然這已不是什麼高難度的問題,但對於一些剛剛開始程式設計的朋友來說可能是有一點困難。其實,方法非常的簡單,只是可能由於這些朋友剛剛開始程式設計不久,一時沒有找到方法而已。下面介紹一下使用c 來完成此項任務。首先,介紹一下儲存檔案到資料庫...

C 將檔案儲存到資料庫中或者從資料庫中讀取檔案

在程式設計中我們常常會遇到 將檔案儲存到資料庫中 這樣乙個問題,雖然這已不是什麼高難度的問題,但對於一些剛剛開始程式設計的朋友來說可能是有一點困難。其實,方法非常的簡單,只是可能由於這些朋友剛剛開始程式設計不久,一時沒有找到方法而已。下面介紹一下使用c 來完成此項任務。首先,介紹一下儲存檔案到資料庫...