最近在趕個專案,在sql server的image欄位中存放了pdf檔案,現在要取出來生成pdf檔案,但檔案是生成了,但用pdf打開報檔案收損失敗,我是這么寫的,首先寫了個讀取的f_write函式
//回傳值:int 1-成功 0-失敗
uLONG ll_len,li_count,loops
int li_FileNum
blob lblb_b
int liResult = 1
ll_len=len(ib_file)
IF ll_len > 32765 THEN
IF Mod(ll_len, 32765) = 0 THEN
loops = ll_len/32765
ELSE
loops = (ll_len/32765) + 1
END IF
ELSE
loops = 1
END IF
li_FileNum = FileOpen(is_filename,StreamMode!, write!, shared!,Replace!)
if li_FileNum = -1 then
messagebox("系統提示","無法打開檔案"+is_filename)
return 0
end if
FOR li_count = 1 to loops
lblb_b = blobmid( ib_file , ( li_count - 1) * 32765 + 1 , 32765 )
if FileWrite(li_FileNum, lblb_b) = -1 then
messagebox("系統提示","寫檔案" + is_filename+"失敗")
liResult=0
exit
end if//8010
NEXT
Fileclose(li_FileNum)
//if liResult=1 then
// liResult = gf_setfiletime(is_filename,idt_file_time)
//end if
return liResult
然后從資料庫中用selectblob取出產生,如下:
blob lb_blob
string ls_filename
int li_ret2
debugbreak()
ls_filename='E:\HFReport\ReportFile\10\68.pdf'
selectblob F_ExtContent into :lb_blob from KM_LIS_ExtReport where F_RequestCode='0400422228'
and F_ReportBarCode='SH14333894438128' and F_IndexNo=1 ;
if sqlca.sqlcode<>0 then
messagebox('系統提示','資料讀取失敗')
return
end if
li_ret2 =f_writefile(lb_blob,ls_filename)
if li_ret2=1 Then
messagebox('','成功!')
Else
messagebox('','失敗!',stopsign!)
end if
檔案是取得成功,但打開失敗,報錯,說是檔案已經受損,估計代碼哪里還有問題,請知道的朋友告知,很緊急,謝謝了
關系到飯碗,請大家幫了,謝謝
uj5u.com熱心網友回復:
你先在網上找人家成熟的代碼,然后,自己先保存一個比較小的pdf檔案進去,再取出來,再保存,看看能不能打開。uj5u.com熱心網友回復:
你先在網上找人家成熟的代碼,然后,自己先保存一個比較小的pdf檔案進去,再取出來,再保存,看看能不能打開。uj5u.com熱心網友回復:
你先在網上找人家成熟的代碼,然后,自己先保存一個比較小的pdf檔案進去,再取出來,再保存,看看能不能打開。uj5u.com熱心網友回復:
檢查一下lb_blob和檔案的大小 ,是否有正確讀取成功轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/38342.html
標籤:腳本語言
上一篇:求PB12.6Classic版
