CAFE

Q & A

Re:파워빌더에서 Mssql 디비에 파일이나 이미지저장은 어떻게 하나요?

작성자아쥐(박영호)|작성시간03.02.12|조회수961 목록 댓글 0
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에 올려 놨다
받았다 하는데요...
이미지도 이렇게 해야 되지 싶네요.
더 나은방법은 아직 몰라요.
다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼