gtk 라이브러리를 사용하여 웹에서 파일을 가져와야하는 기능은 무엇입니까?웹에서 파일 가져 오기 : C를 사용하여 GTK에서
내 파일에서 인 경우 :
gchar의 * 경로 = "HTTP : //xxx.yyyServer/sharing/temp.txt"
내가 그것을 다운로드해야합니까?
로컬 파일의 경우 단순히 fopen 및 fread와 같은 C 라이브러리를 사용합니다.
위의 작업을 어떻게해야합니까?
자습서에는 파일 처리의 예제가 없습니다. 파일 대화 상자에서 파일 선택기 만 볼 수 있습니다.
이 놈을 도와주세요.
감사 코멘트에서 작업 코드로 업데이트
아래 코드는 알 수없는 크기의 바이너리 파일을 사용할 수 있습니다.char *name= http://127.0.0.1:8000/mybinfile
int getFile(char *name)
{
GFile *f = g_file_new_for_uri(name);
GFileInputStream *fis = NULL;
GDataInputStream* dis = NULL;
GError *err = NULL;
//char buffer[2048];
char *buffer;
size_t length;
int ret = -1;
GFileInfo *info;
int total_size = -1;
/* get input stream */
fis = g_file_read(f, NULL, &err);
if (err != NULL) {
fprintf(stderr, "ERROR: opening %s\n", name);
g_object_unref(f);
return -1;
}
info = g_file_input_stream_query_info (G_FILE_INPUT_STREAM (fis),G_FILE_ATTRIBUTE_STANDARD_SIZE,NULL, &err);
if (info)
{
if (g_file_info_has_attribute (info, G_FILE_ATTRIBUTE_STANDARD_SIZE))
total_size = g_file_info_get_size (info);
printf("total_size = %d\n", total_size);
g_object_unref (info);
}
// fill buffer
if(total_size > 0){
buffer = (char *) malloc(sizeof(char) * total_size);
memset(buffer, 0, total_size);
if ((length = g_input_stream_read (G_INPUT_STREAM(fis),
buffer, total_size, NULL, &err)) != -1) {
printf("reading file\n");
}
printf("File length = %d\n", length);
ret = 0;
}
// close streams
g_object_unref(fis);
g_object_unref(f);
return ret;
}
CURL이 작업을 수행 할 수 있습니다. – nullpotent
더러운 해킹은 어떨까요? int meh = system ("wget"+ name); – Mikhail