파일 내의 데이터 위치를 이용한 파일관리법

불량청년의 이미지

안녕하십니까?

보통 웹의 게시판의 글을 보면 내용은 DB에 넣고 해당 이미지나 첨부

파일들은 각각 디렉토리에 넣어 관리를 하는걸로 압니다.

이번에 제가 만들어야 할 것이 이런 하나의 게시물에 연계되어 있는

데이터를 하나의 파일에 모두 저장해서 관리하는걸 만들어야 할 꺼

같은데... 도통 개념이 떠올르지 않네요.

일단 게시판은 웹에디터가 장착되어 게시물의 중간중간 내용에 사용자가

업로드한 이미지가 삽입되어야 합니다. 또한 첨부파일도 저장되고요.

간단하게 생각해 보면

1. 파일의 처음부터 몇 바이트까지 헤더를 만든다.

2. text_r 이란 필드는 게시물의 TEXT자료의 시작 주소를 갖고 있다.

3. img_r 이란 필드는 게시물의 이미지 자료 시작 주소를 갖고 있다.

4. data_r이란 필드는 게시물의 첨부파일 시작 주소를 갖고 있다.

여기서 파일내의 주소를 구할 수 있는지요? off_set으로 해줘야 할꺼 같은데...

즉, img_r이란 필드에 파일 내에서 이미지 데이터의 시작주소를 넣어줘야

할텐데 off_set 으로 넣어줘야 하는지요?

FruitsCandy의 이미지

제가 제대로 이해하고 있는지 모르겠습니다만..

간단하게 파일의 경로를 DB에 넣어버리는게 편할 것 같습니다.

예를 들어 /Web/IMAGE/test1.jpg 라는 파일을 업로드 하였다면

DB에는 /Web/IMAGE/test.1.jpg 를 그대로 박아버리는 거죠

예를 들어 필드를 2개 두어서

Image                                 file_no
/Web/IMAGE/test1.jpg                 2

위와 같이 게시물 번호(file_no)로 부터 이미지 경로를 긁어올수 있을 것같습니다.

제가 질문을 제대로 이해하지 못한것 같아 확신이 없네요 그럼 ..

아지랑이류 초환상 공콤 화랑... 포기하다.. T.T

doraq의 이미지

질문하신 분의 상황은 모르겠으나 먼저 그 상황에서 그런 결론(하나의 파일에 다 저장하기)을 낸것부터 최적의 결론인지 다시 생각해 보는게 좋겠습니다.
웹의 환경에서 page를 구성하는 구성요소가 한 파일의 일부라면, 표준이랄까..에도 상당히 벗어나는것 같구요. 웹서버의 동작에도 많이 무리가 따르겠네요.
파일 하나라는 전제 아래서는 아무리 잘 구상해도 안좋아 보입니다.

생각해내기 어려운게 아닌데 잘 안쓰는 거는 대체로 대부분의 경우엔 안좋기 때문입니다.

bluemoon의 이미지

tacstar wrote:
1. 파일의 처음부터 몇 바이트까지 헤더를 만든다.

2. text_r 이란 필드는 게시물의 TEXT자료의 시작 주소를 갖고 있다.

3. img_r 이란 필드는 게시물의 이미지 자료 시작 주소를 갖고 있다.

4. data_r이란 필드는 게시물의 첨부파일 시작 주소를 갖고 있다.

여기서 파일내의 주소를 구할 수 있는지요? off_set으로 해줘야 할꺼 같은데...

즉, img_r이란 필드에 파일 내에서 이미지 데이터의 시작주소를 넣어줘야

할텐데 off_set 으로 넣어줘야 하는지요?

레코드에서 각 필드의 경계선에 구분자를 두는것으로 충분할듯 하고요.
레코드중 특정 필드의 업데이트가 일어날때(크기가 동적이라고 가정)를 생각한다면 이 방법이 더 쉽죠. 파일내 주소.. 이런거 보다 이식성도 좋고요.

gdbm과 같은 파일시스템 기반의 db를 사용해보세요.
그나마 편합니다. 파일락과 같은 인터페이스가 아니라
트랜잭션도 지원하는(롤백과 유사한) Berkeley DB도 멋집니다.

정태영의 이미지

메일파일 형식을 분석해보세요 :)
메일파일에 그런게 전부 구현되어 있기는 하거든요 :)

그걸 응용해서 만든다음에.. 웹메일로 발전시켜서
소스를 던져주세요 =3=33 도망

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

불량청년의 이미지

특정 서비스를 하는 웹서버를 만들고 각 linux OS에서 동작하게 할껀데,

문제는 설치과정에서 필요로 하는 패키지나 라이브러리를 최소화 하기

위해서 DBMS를 사용하지 않으려고 하거든요.

일단 자체적으로 모든 라이브러리를 만들어 사용하려 하기 때문에 이방법을

사용하기로 했습니다.

말이 최소화 하기 위한 것이지, 거의 자체적으로 동작하는 서버를 만들어야

하기 때문에 파일 하나로 몽땅 처리하기로 했습니다. 또한 차후 이 파일만을

이용하여 전용뷰어를 만들어 서비스 하기 위함도 있구요. 게시물 자체가

컨텐츠가 되는 관계로...

아뭍은 답변 감사합니다.

H/W가 컴퓨터의 심장이라면 S/W는 컴퓨터의 영혼이다!

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.