我修改被寫入在Delphi 6.0保存的數據被破壞;長度> = 100KB
我在Oracle中的表與名爲FILE_CONTENT BLOB列的程序。
我已經成功上傳了大約100 KB的XML文件。我已驗證文件內容是否使用SQL Developer正確上傳。
我遇到的問題是當我嘗試將文件內容從數據庫下載迴文件。這是我使用donwload它的一個示例代碼:
procedure TfrmDownload.Save();
var
fileStream: TFileStream;
bField: TBlobField;
begin
dmDigital.qrGetData.Open;
dmDigital.RequestLive := True;
bField := TBlobField(dmDigital.qrGetData.FieldByName('FILE_CONTENT'));
fileStream := TFileStream.Create('FILE.XML', fmCreate);
bField.SaveToStream(fileStream);
FlushFileBuffers(fileStream.Handle);
fileStream.Free;
dmDigital.qrGetData.Close;
end;
上面的代碼已下載文件的內容FILE.XML。我正在使用RequestLive:=True
以便能夠下載大BLOB(否則文件內容被截斷爲最大32K)
生成的文件與原始文件大小相同。但是,當我將下載的文件與原始文件進行比較時,會有一些差異(例如最後一個字符丟失,其他字符也會更改),因此下載內容時似乎存在問題。
你知道錯在哪裏嗎?
該問題似乎與Delphi代碼有關,因爲我已經嘗試使用C#並且文件內容已正確下載。
你爲什麼打電話FlushFileBuffers –
我現在知道,它不會有所作爲,如果我把它與否,但起初似乎該文件被截斷(至少是最後一個字符)......這就是爲什麼我嘗試flushfilebuffers –
這不是一個好主意。去掉它。 –