2013-04-07 62 views
0

我想要做什麼:變量文件名和CURLIB

我想寫的交流計劃,會從網址下載文件並存儲在本地,我發現下面的指南,它不正是我想要的只要我硬編碼的文件名:

http://siddhantahuja.wordpress.com/2009/04/12/how-to-download-a-file-from-a-url-and-save-onto-local-directory-in-c-using-libcurl/

什麼是我的問題:

的文件遭到每小時更新,加蓋每個新文件的日期和時間。我可以使用time.h預測所需的文件名,並提取當前的日期和時間信息,但是我無法弄清楚如何將這些信息合併到可傳遞給curlib命令的表單中。

目前嘗試的解決方案(不工作):

char *url;      //char pointer to URL 
url = malloc((sizeof(char)*51+1);//allocate memory to pointer address is 51 characters + \0 terminator 
sprintf(url, "http://>URL Info</FILENAME%.4d%.2d%.2d%.2d30.jpg\0", year, month, date, hour); 
           //ie http://example.com/files/FILENAME201304071030.jpg 

字符串被填充,我可以用printf的輸出它,但它似乎並沒有得到傳遞給CURLIB命令:

curl_easy_setopt(curl, CURLOPT_URL, url); 

它創建目標文件,但該文件爲空。我懷疑它與char指針和字符串之間的區別有關,但我不確定是什麼。

任何想法,我做錯了什麼,我應該嘗試下一步?

回答

0

您應該在libcurl-using程序中使用CURLOPT_VERBOSE選項並檢查發送的請求/響應。

我的猜測是,你不知何故只是要求錯誤的URL和服務器響應404或其他沒有實際的響應主體內容的東西。

The curl_easy_setopt(curl,CURLOPT_URL,url);打電話給你看起來很好,因爲它在零終止字符*,這就是你發送給它。當然,VERBOSE輸出也會告訴你,如果libcurl確實按照你期望的方式處理輸入。

+0

最後,我犯了最大的錯誤。我的程序在當地時間工作,但我想下載的圖像基於UTC。一旦我有這種排序它一切正常...... – user2253585 2013-04-12 09:32:47