का उपयोग करके मैं gtk libs का उपयोग कर वेब से एक फ़ाइल कैसे प्राप्त करूं?वेब से एक फ़ाइल प्राप्त करें: जी 0K में सी
अगर मेरे फ़ाइल से है:
gchar * पथ = "http: //xxx.yyyServer/sharing/temp.txt"
मैं क्या इसे डाउनलोड करने के क्या करना चाहिए?
स्थानीय फ़ाइलों के लिए मैं बस सी पुस्तकालयों जैसे फॉपेन और फ्रेड का उपयोग करता हूं।
मुझे उपर्युक्त कैसे करना चाहिए?
दुर्भाग्य से ट्यूटोरियल में फ़ाइल हैंडलिंग का कोई उदाहरण नहीं है। मैं केवल फाइल संवाद बॉक्स से फ़ाइल चयनकर्ता देख सकता हूं।
कृपया इस नोब की मदद करें।
धन्यवाद
टिप्पणियाँ से काम कर कोड से अपडेट: नीचे कोड अज्ञात आकार के द्विआधारी फ़ाइलों के लिए काम करता है।
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;
}
कर्ल नौकरी कर सकता है। – nullpotent
एक गंदे हैक के बारे में कैसे? int meh = system ("wget" + name); – Mikhail