通過curl下載檔案
本文件介紹SylixOS下通過curl中介軟體下載檔案的流程,使用者應熟悉SylixOS以及curl中介軟體。2. 下載流程
2.1 資源準備
檔案下載依賴curl中介軟體,故下載前需基於SylixOS進行curl中介軟體移植,移植過程本文件不做詳細介紹,請參照《SylixOS下中介軟體移植手冊》。2.2 下載流程
檔案下載前需獲取可用的下載url,使用curl中介軟體提供的介面進行檔案下載。下載流程如程式清單 2.1所示。程式清單 2.1 檔案下載流程
參考資料:libcurl官網原始碼#include <stdio.h> #include <string.h> #include "curl/curl.h" /*************************************************************************** ** 函式名稱: write_data ** 功能描述: 回撥函式 ** 輸 入 : ptr 寫資料指標 ** size 寫入塊位元組數 ** nmemb 寫資料塊數 ** stream 目標檔案指標 ** 輸 出 : 寫入塊數 ** 返 回 : written ***************************************************************************/ size_t write_data (void *ptr, size_t size, size_t nmemb, FILE *stream) { size_t written = fwrite(ptr, size, nmemb, stream); return written; } /*************************************************************************** ** 函式名稱: fileDownload ** 功能描述: 下載函式 ** 輸 入 : pcAddressUrl 下載地址 ** pcFileName 下載檔名 ** 輸 出 : NONE ** 返 回 : ERROR_NONE ***************************************************************************/ int fileDownload (char *pcAddressUrl, char *pcFileName) { CURLcode curlRet; CURL *curl = LW_NULL; FILE *fp = LW_NULL; char *url = pcAddressUrl; /* 下載網址 */ char *filename = pcFileName; /* 下載檔名字 */ curl = curl_easy_init(); /* 初始化 curl 會話 */ if (!curl) { printf("curl_easy_init failed\n"); return (PX_ERROR); } fp = fopen(filename, "w+"); /* 開啟檔案 */ if (!fp) { printf("fopen failed\n"); return (PX_ERROR); } curlRet = curl_easy_setopt(curl, CURLOPT_URL, url); /* 設定 url */ if (curlRet != CURLE_OK) { fclose(fp); curl_easy_cleanup(curl); return (PX_ERROR); } curlRet = curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);/* 設定回撥函式 */ if (curlRet != CURLE_OK) { fclose(fp); curl_easy_cleanup(curl); return (PX_ERROR); } curlRet = curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); /* 設定寫入檔案控制代碼 */ if (curlRet != CURLE_OK) { fclose(fp); curl_easy_cleanup(curl); return (PX_ERROR); } curlRet = curl_easy_perform(curl); /* 完成傳輸函式 */ if (curlRet != CURLE_OK) { fclose(fp); curl_easy_cleanup(curl); return (PX_ERROR); } fclose(fp); curl_easy_cleanup(curl); /* 釋放記憶體 */ return (ERROR_NONE); } /*************************************************************************** ** 函式名稱: main ** 功能描述: 程序主函式 ** 輸 入 : argc 入參個數 ** argv 入引數組 ** 輸 出 : NONE ** 返 回 : ERROR_CODE ***************************************************************************/ int main (int argc, char **argv) { int iRet = -1; printf("start download...\n"); /* * 下載檔案 * UPDATE_URL 下載地址 * UPDATE_FILE_NAME 下載儲存檔名 */ iRet = fileDownload(UPDATE_URL, UPDATE_FILE_NAME); if (iRet != ERROR_NONE) { printf("file down failed\n"); return (PX_ERROR); } return (ERROR_NONE); }
相關推薦
通過curl下載檔案
1. 適用範圍 本文件介紹SylixOS下通過curl中介軟體下載檔案的流程,使用者應熟悉SylixOS以及curl中介軟體。2. 下載流程2.1 資源準備 檔案下載依賴curl中介軟體,故下載前需基於SylixOS進行curl中介軟體移植,移植過程本文件不做
利用curl下載檔案,包括Get和Post
#define STOP_DOWNLOAD_AFTER_THIS_MANY_BYTES 60000000000 #define MINIMAL_PROGRESS_FUNCTIONALITY_INTERVAL 3 &n
JSCH通過sftp下載檔案
此文轉載: 博文原地址:https://blog.csdn.net/sinat_34620530/article/details/54311732 尊重原創! 使用jsch通過ftps連線伺服器端下載檔案 Session session=jsch.getSession(ftpUserNa
【springmvc】通過POI下載檔案的實現過程
通過POI下載檔案的實現過程 整體程式碼實現思路 前臺程式碼 後臺程式碼 整體程式碼實現思路 首先在jsp頁面中,設定一個匯出功能按鈕,在匯出功能函式中,通過window.location.href的方式開啟一個新的頁面;
火狐瀏覽器js指令碼通過url下載檔案
if(isFirefox=navigator.userAgent.indexOf("Firefox")>0){ debugger var iframe = document.createElement("iframe") iframe
CentOS7.5 通過wget下載檔案到指定目錄
在Linux命令列下面下載檔案,通過wget是比較普遍簡單的,比如在CentOS7 裡面也一樣。 我們先來看下自己的CentOS7 系統有沒有安裝wget: [[email protected
curl 下載檔案失敗 如何排錯
最近用curl下載遠端檔案 , 下載後老顯示0kb , 之前一直下載正常 , 檢查發現 curl_error 沒有提示 curl_errno 是0 表示正常 最後通過 curl_getinfo 打印發現 httpd_code 為401 表示未認證 , 後來發現
通過連結下載檔案並儲存到本地
在做微信的圖片上傳的時候,發現上傳的是臨時素材,我們需要從微信伺服器下載圖片並儲存到本地,所以涉及的就是通過連結下載檔案並儲存到本地的方法。 通過url下載的過程有如下幾步: (1)客戶端發起一個url請求,獲取連線物件。 (2)伺服器
通過okhttp3下載檔案實現APP版本更新
概況 思路是這樣的,首先在伺服器上把已經簽名打包的apk放上去,還有一份TXT檔案,檔案上寫著相關的版本號,然後客戶端通過對比版本號決定是否下載檔案。下載後就開啟安裝介面安裝。 第一步 把已經簽名打包apk和txt檔案放上到伺服器上,版本號要和t
js通過Url下載檔案
我們通過iframe到後臺請求一個下載,後臺通過流返回到瀏覽器,彈出儲存視窗。 js程式碼: function (){ var voiceUrl =baseURL+ "download";
linux 通過 tftp下載檔案
1、應用程式如何移植到目錄板? 1)複製到介質,如U盤 2)通過網路(tftp)傳輸檔案到開發板(檔案較小,推薦使用) 3)置於根檔案系統目錄下製作檔案系統映象,再燒進開發板(檔案很大,可以使用) 4)通過NFS(網路檔案系統) 直接執行 2、如何實現tftp傳輸? 要
通過Servlet實現檔案的上傳和下載
一、要實現Servlet的檔案上傳和下載,首先需要藉助第三方的jar包 二、Servlet的程式碼 package com.xh.web; import org.apache
前後臺互動實現點選超連結通過指定的 url 去網路或者檔案伺服器下載檔案
前臺 VUE 介面: <el-table-column prop="attachment" align="center" label="附件詳情"> <template slot-scope="scope"> <!--<el-button @
HTML實現通過超連結下載檔案,還附帶一些js輔助函式
下載檔案函式 download (src, fileName) { let $a = document.createElement('a'); $a.setAttribute('href', src); $a.setAttribute('download', fileName);
js通過URL下載伺服器檔案(可行方法)
本文講述已知檔案在伺服器的地址,如何下載至本地 其他部落格分享的一般是這兩種 1.通過window.open window.open('https://1.1.1.1/test.txt') 2.通過get表單請求 var $form = $('<form method=
axel: 多執行緒下載工具,下載檔案時可以替代curl、wget
Axel 是 Linux 下一個不錯的HTTP/FTP高速下載工具。支援多執行緒下載、斷點續傳,且可以從多個地址或者從一個地址的多個連線來下載同一個檔案。適合網速不給力時多執行緒下載提高下載速度。比如在國內VPS或伺服器上下載lnmp一鍵安裝包用Axel就比wget快。opti
js通過URL下載伺服器檔案(URL為變數)
有時候我們得到的URL是動態獲取的,所以此時我們可以用如下方式設定檔案地址 <a :href ="'http://'+ip+'/test.txt'" download="test">
struts2下載檔案時通過超連結下載亂碼
通過這種方式傳值,由於是URL方法傳遞,所以用post方法傳遞,所以getbytes方法修改無效,而Tomcat預設使用ISO-8859-1編碼,不支援中文 特別注意此處的兩個選中部位 修改後下載正常
Java通過http協議下載檔案並寫入位元組流的方法
最近寫微服務,從服務端通過http協議下載檔案並寫入位元組流。開始以為很簡單。直接上手就來了,程式碼如下: String szHttpFile="http://..../downlaod&&fileId="+fileId+"&&extra[a
通過IO流的方式從WebApp裡面下載檔案
從WebApp裡面下載Excel檔案,檔案路徑: 1.Controller層程式碼: /** * 裝置管理——匯入模板下載 * * @param requestType 下載標記 *