image 형태로 필드 선언하고
// Down Script
integer li_FileNum
Long ll_no, ll_row
blob lBLOB
SELECTBLOB FILEBIN
INTO :lBLOB
FROM TCOMM82M
where SYSGB = :gs_Sysgb AND LIBCD = :as_fileName;
integer loops, i
long flen, bytes_read, new_pos
blob b, tot_b
flen = len(lBLOB)
If gf_dnvl(flen,0) <> 0 Then
// Determine how many times to call FileRead
IF flen > 32765 THEN
IF Mod(flen, 32765) = 0 THEN
loops = flen/32765
ELSE
loops = (flen/32765) + 1
END IF
ELSE
loops = 1
END IF
// Read the file
new_pos = 1
li_FileNum = FileOpen(gs_CurrDir + '\' + as_fileName, StreamMode!, Write!) // Shared!, Replace!)
FOR i = 1 to loops
b = blobmid(lBLOB, 1, 32765)
FileWrite(li_FileNum, lBLOB)
// bytes_read = FileRead(li_FileNum, b)
lBLOB = blobmid(lBLOB, 32765 + 1)
NEXT
FileClose(li_FileNum)
li_Rtn = 1
End If
// UPLoad Script
ls_fileName = gf_snvl(dw_sub2.Object.fullname[ll_Row], 'x')
flen = FileLength(ls_FileName)
li_FileNum = FileOpen(ls_FileName, StreamMode!, Read!, LockRead!)
If flen > 32765 Then
If Mod(flen, 32765) = 0 Then
Loops = flen / 32765
Else
loops = (flen/32765) + 1
End If
Else
Loops = 1
End If
New_Pos = 1
For i = 1 To Loops
Bytes_Read = FileRead(li_FileNum, B)
Tot_b = Tot_b + b
Next
FileClose(li_FileNum)
li_FileNum = FileOpen(ls_FileName, StreamMode!, Read!, LockRead!)
If Len(tot_b) <= 0 then
MessageBox("알림", "파일 읽기 실패")
Return Lb_rtn
End If
If li_FileNum <> -1 Then
UPDATEBLOB TCOMM82M SET FILEBIN = :Tot_B
WHERE SYSGB = :ls_sysgb
AND LIBCD = :ls_libcd;
END If
If SQLCA.SQLCODE = 0 Then
COMMIT USING SQLCA;
lb_rtn = True
ElSE
ROLLBACK USING SQLCA;
lb_rtn = False
End If
이렇게 해서 파일을 MS-SQL Server 7.0에 올려 놨다
받았다 하는데요...
이미지도 이렇게 해야 되지 싶네요.
더 나은방법은 아직 몰라요.
// Down Script
integer li_FileNum
Long ll_no, ll_row
blob lBLOB
SELECTBLOB FILEBIN
INTO :lBLOB
FROM TCOMM82M
where SYSGB = :gs_Sysgb AND LIBCD = :as_fileName;
integer loops, i
long flen, bytes_read, new_pos
blob b, tot_b
flen = len(lBLOB)
If gf_dnvl(flen,0) <> 0 Then
// Determine how many times to call FileRead
IF flen > 32765 THEN
IF Mod(flen, 32765) = 0 THEN
loops = flen/32765
ELSE
loops = (flen/32765) + 1
END IF
ELSE
loops = 1
END IF
// Read the file
new_pos = 1
li_FileNum = FileOpen(gs_CurrDir + '\' + as_fileName, StreamMode!, Write!) // Shared!, Replace!)
FOR i = 1 to loops
b = blobmid(lBLOB, 1, 32765)
FileWrite(li_FileNum, lBLOB)
// bytes_read = FileRead(li_FileNum, b)
lBLOB = blobmid(lBLOB, 32765 + 1)
NEXT
FileClose(li_FileNum)
li_Rtn = 1
End If
// UPLoad Script
ls_fileName = gf_snvl(dw_sub2.Object.fullname[ll_Row], 'x')
flen = FileLength(ls_FileName)
li_FileNum = FileOpen(ls_FileName, StreamMode!, Read!, LockRead!)
If flen > 32765 Then
If Mod(flen, 32765) = 0 Then
Loops = flen / 32765
Else
loops = (flen/32765) + 1
End If
Else
Loops = 1
End If
New_Pos = 1
For i = 1 To Loops
Bytes_Read = FileRead(li_FileNum, B)
Tot_b = Tot_b + b
Next
FileClose(li_FileNum)
li_FileNum = FileOpen(ls_FileName, StreamMode!, Read!, LockRead!)
If Len(tot_b) <= 0 then
MessageBox("알림", "파일 읽기 실패")
Return Lb_rtn
End If
If li_FileNum <> -1 Then
UPDATEBLOB TCOMM82M SET FILEBIN = :Tot_B
WHERE SYSGB = :ls_sysgb
AND LIBCD = :ls_libcd;
END If
If SQLCA.SQLCODE = 0 Then
COMMIT USING SQLCA;
lb_rtn = True
ElSE
ROLLBACK USING SQLCA;
lb_rtn = False
End If
이렇게 해서 파일을 MS-SQL Server 7.0에 올려 놨다
받았다 하는데요...
이미지도 이렇게 해야 되지 싶네요.
더 나은방법은 아직 몰라요.
다음검색