2011-12-15 3 views
0

나는이 모든 것들에 대한 완전한 초보자이며, 나는 플러그인을 개발 중이다. libcurl을 사용하여 파일을 업로드해야합니다. 문제는 그 파일이 디스크에 없다는 것입니다, 그것의 내용에 대한 포인터가 내 플러그인에 전달됩니다. 그래서 내 질문에 파일을 업로드하려면 파일 * var 필요하지만 void *. 어떻게해야합니까?void * to FILE * ... 가능합니까?

미리 감사드립니다.

+0

항상 임시 파일에 데이터를 쓰고 그 데이터를 보낼 수 있습니다. –

+0

만약 당신이 가지고있는 것이'void *'이면, 당신이 가리킬 수있는 데이터의 타입을 알지 못한다면 절대 아무것도 할 수 없습니다 *. 그래서 그 포인터는 무엇입니까? – Jon

+0

@ 존 : 그게 사실이 아니에요 ... 그는 알 수없는 이진 BLOB와 그 크기 (아마도)에 대한 포인터를 가지고 있습니다.이 데이터를 업로드하기 위해/파일에 쓰거나 일반적으로 어딘가에 저장할 필요가 없습니다. –

답변

3

this example에 지정된대로 FILE *을 제공하는 대신 읽기 콜백을 사용하여 업로드를 수행 할 수 있습니다. 콜백에서 업로드 할 데이터를 주어진 버퍼에 복사 할 수 있습니다.

+0

이 예제를 보면 curl_easy_setopt (curl, CURLOPT_READDATA, hd_src);가 추가되었습니다. 그 파일이 정말로 필요하다는 뜻입니까? – Eugeny89

+0

아니요, 이것은 read_callback 함수의 첫 번째 매개 변수로 제공되는 임의의 매개 변수 일뿐입니다. 'void *'와 내용의 크기를 포함하는'struct'에 대한 포인터를 사용해야합니다. –

+0

설명해 주셔서 감사합니다. – Eugeny89