轉檔案 & Base64 編碼的問題 |
尚未結案
|
xfile
初階會員 發表:21 回覆:80 積分:25 註冊:2004-10-02 發送簡訊給我 |
各位好,我參考了一下站上許多資料,最後決定還是問一問比較快 :Q 小弟有個程式,要開啟圖形檔然後經過 Base64 編碼再轉成 blob
塞進資料庫裡,BCB 的 IdBase64Encoder 元件只能吃 AnsiString,
所以讀出來的 MemoryStream 要轉成 AnsiString,我知道我的轉法很草率,
可是我沒辦法了 orz 讀出來的圖老是出錯,以下是我存圖的主要程式片段
TMemoryStream* Temp_ms = new TMemoryStream() ; AnsiString CodeString ; Temp_ms->LoadFromFile( "圖形檔名" ) ; Temp_ms->Position = 0 ; CodeString.SetLength( Temp_ms->Size ) ; Temp_ms->ReadBuffer( CodeString.c_str() , CodeString.Length() ) ; IdBase64Encoder1->CodeString( CodeString ) ; CodeString = IdBase64Encoder1->CompletedInput(); Temp_ms->Clear() ; Temp_ms->Position = 0 ; Temp_ms->WriteBuffer( CodeString.c_str() 2 , CodeString.Length()-2 ) ; //把 AnsiString 轉出來的前置無用字元砍掉 if ( ADOConnection1->Connected ) { ADOQuery1->Close() ; ADOQuery1->SQL->Clear() ; ADOQuery1->Parameters->Clear() ; ADOQuery1->SQL->Add("INSERT INTO photo_info (p_binary)"); //photo_info 資料表中的 p_binary 是 longblob 形式的欄位,存圖形資料 ADOQuery1->SQL->Add("VALUES (:p_binary)" ); ADOQuery1->Parameters->ParamByName("p_binary")->LoadFromStream(Temp_ms , ftBlob) ; ADOQuery1->ExecSQL() ; }轉成 AnsiString 的部份應該是問題所在,因為同樣的圖用 php 做就沒事, 用這程式就不一定,而且大圖幾乎必死。 請問各位有什麼解決的辦法嗎 ? 發表人 - xfile 於 2005/11/02 17:40:57 |
xfile
初階會員 發表:21 回覆:80 積分:25 註冊:2004-10-02 發送簡訊給我 |
引言: 各位好,我參考了一下站上許多資料,最後決定還是問一問比較快 :Q 小弟有個程式,要開啟圖形檔然後經過 Base64 編碼再轉成 blob 塞進資料庫裡,BCB 的 IdBase64Encoder 元件只能吃 AnsiString, 所以讀出來的 MemoryStream 要轉成 AnsiString,我知道我的轉法很草率, 可是我沒辦法了 orz發現因為是檔案裡有 0x00 的關係,轉成字串會被截掉 但是不轉成字串,又沒辦法給 IdBase64Encoder 元件用 :( |
xfile
初階會員 發表:21 回覆:80 積分:25 註冊:2004-10-02 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |