개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.03.12 21:13

finfo_buffer 함수 사용 방법에 관해 질문합니다

  • 보안전문가 4일 전 2025.03.12 21:13
  • 3
    1
제가 현재 C 언어로 웹 서버를 개발 중입니다.

finfo_buffer 함수를 사용하여 MIME 타입을 확인하고 있습니다.

하지만, finfo_buffer 함수의 결과 값을 어떻게 해석해야 하는지 모르겠습니다.

finfo_buffer 함수의 결과 값은 어떤 형식으로 반환되는지 궁금합니다.

그리고, 이 결과 값을 사용하여 MIME 타입을 확인하는 방법은 무엇입니까?

아래의 예제 코드에서 finfo_buffer 함수가 어떻게 사용되는지 알려주세요.

c

#include 

#include 

#include 



int main() {

    MAGIC *m = magic_open(MAGIC_MIME_TYPE);

    magic_load(m, NULL);



    const char *filename = "example.txt";

    struct stat statbuf;

    stat(filename, &statbuf);



    unsigned char buffer[1024];

    int ret = statbuf.st_size;

    if (ret < 0) {

        printf("File not foundn");

        return 1;

    }



    if (statbuf.st_size <= 1024) {

        FILE *fp = fopen(filename, "rb");

        if (fp == NULL) {

            printf("Failed to open filen");

            return 1;

        }



        fseek(fp, 0, SEEK_END);

        ret = ftell(fp);

        rewind(fp);



        if (ret < 0) {

            printf("Failed to get file sizen");

            return 1;

        }



        int len = fread(buffer, 1, ret, fp);

        fclose(fp);



        if (len != ret) {

            printf("Failed to read filen");

            return 1;

        }



        char *mime = magic_buffer(m, buffer, len);

        printf("MIME: %sn", mime);

        magic_close(m);

        free(mime);

    } else {

        printf("File too largen");

    }



    return 0;

}



이 예제 코드에서 finfo_buffer 함수는 어떻게 사용되는지 알려주세요.

    댓글목록

    profile_image
    나우호스팅  4일 전



    finfo_buffer 함수는 libmagic 라이브러리를 사용하여 MIME 타입을 확인하는 함수입니다. 이 함수는 파일의 내용을 분석하여 MIME 타입을 반환합니다.

    finfo_buffer 함수의 결과 값을 해석하는 방법은 다음과 같습니다.

    1. 함수의 첫 번째 인자로 MAGIC 타입을 전달합니다. MAGIC 타입은 MIME 타입을 확인하는 타입입니다.
    2. 함수의 두 번째 인자로 파일의 내용을 전달합니다. 파일의 내용은 unsigned char 형식의 배열이어야 합니다.
    3. 함수의 세 번째 인자로 파일의 크기를 전달합니다. 파일의 크기는 int 형식의 변수이어야 합니다.
    4. 함수의 결과 값은 char 형식의 문자열로 반환됩니다. 이 문자열은 MIME 타입을 나타냅니다.

    예제 코드에서 finfo_buffer 함수는 다음과 같이 사용됩니다.

    #hostingforum.kr
    c
    
    char *mime = magic_buffer(m, buffer, len);
    
    


    이 코드는 MAGIC 타입을 전달하여 MIME 타입을 확인하고, 파일의 내용을 전달하여 MIME 타입을 분석합니다. 결과 값은 char 형식의 문자열로 반환되며, 이 문자열은 MIME 타입을 나타냅니다.

    finfo_buffer 함수의 결과 값을 사용하여 MIME 타입을 확인하는 방법은 다음과 같습니다.

    1. 결과 값을 char 형식의 문자열로 받습니다.
    2. 문자열을 비교하여 MIME 타입을 확인합니다.

    예를 들어, 결과 값이 "text/plain" 인 경우, MIME 타입은 text/plain 이라고 확인할 수 있습니다.

    #hostingforum.kr
    c
    
    if (strcmp(mime, "text/plain") == 0) {
    
        printf("MIME 타입은 text/plain입니다.n");
    
    } else {
    
        printf("MIME 타입은 %s입니다.n", mime);
    
    }
    
    


    이 코드는 결과 값을 char 형식의 문자열로 받고, 문자열을 비교하여 MIME 타입을 확인합니다. 결과 값이 "text/plain" 인 경우, MIME 타입은 text/plain 이라고 확인하고, 그렇지 않은 경우 MIME 타입을 출력합니다.

    2025-03-12 21:14

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 3,997건 / 1 페이지

검색

게시물 검색