关于html页面在线升级问题
?????? 關于HTML在線升級的問題,這里是關于linux嵌入式方面,基于boa服務器的升級,所用到的cgi程序為C語言所編輯,主要想清楚這兩個面,第一,升級的目的是什么,第二,如何升級。
?????? 首先就第一個問題,升級的目的是什么進行討論,說白了,升級就是將新文件把原有的文件替換掉。
?? 其次,升級的過程是:
?? 1.需要做一個升級的網頁即:
<form name="decode" id="form" method="post" action="cgi-bin/uploadcgi.cgi" enctype="multipart/form-data" target="_blank"><!--<input type="hidden" name="action" value="set"/>--> <div class="fr_cont"><p><input type="file" class = "fr_bot1" id="file" name="file"/><input type="submit" class = "fr_bot2" value="上傳" /> </p></div></form>?
??????? 2.將文件上傳的服務器:
????? 這里使用的上傳代碼為:(需要借助cgic庫)
???
//取得html頁面中file元素的值,應該是文件在客戶機上的路徑名
????if (cgiFormFileName("file", name, sizeof(name)) !=cgiFormSuccess)
????{
??????fprintf(stderr,"could not retrieve filename\n");
??????goto FAIL;
????}
????printf("name:%s\n",name);
????cgiFormFileSize("file", &size);
????//目前文件存在于系統臨時文件夾中,通常為/tmp,通過該命令打開臨時文件。臨時文件的名字與用戶文件的名字不同,所以不能通過路徑/tmp/userfilename的方式獲得文件
????if (cgiFormFileOpen("file", &file) != cgiFormSuccess)
????{
??????fprintf(stderr,"could not open the file\n");
??????//?goto FAIL;
????}
????t=-1;
????//從路徑名解析出用戶文件名
????while(1)
????{
??????tmpStr=strstr(name+t+1,"\\");
??????if(NULL==tmpStr)
????????tmpStr=strstr(name+t+1,"/");//if "\\" is not path separator, try "/"
??????if(NULL!=tmpStr)
????????t=(int)(tmpStr-name);
??????else
????????break;
????}
????strcpy(fileNameOnServer,name+t+1);
????mode=S_IRWXU|S_IRGRP|S_IROTH;
????printf("fileNameOnServer:%s\n",fileNameOnServer);
????//在當前目錄下建立新的文件,第一個參數實際上是路徑名,此處的含義是在cgi程序所在的目錄(當前目錄))建立新文件???
????targetFile=open("/app/www/cgi-bin/www.tar.gz",O_RDWR|O_CREAT|O_TRUNC|O_APPEND,mode);//下載到服務器的具體地址上
????if(targetFile<0)
????{
??????fprintf(stderr,"could not create the new file,%s\n",fileNameOnServer);
??????goto??? FAIL;
????}
????//從系統臨時文件中讀出文件內容,并放到剛創建的目標文件中
????while (cgiFormFileRead(file, buffer, BufferLen, &got) ==cgiFormSuccess){
??????if(got>0)
????????write(targetFile,buffer,got);???
????}
????cgiFormFileClose(file);
????close(targetFile);
?
3.將上傳的文件進行解壓
?? 在這里我使用的是系統命令:system("tar -xvf? 壓縮文件文件名");
4.將解壓之后的文件進行替換:
system("cp 文件名路徑 要替換的文件路徑");
這樣就簡單的完成了一個html網頁的在線升級,這里可能會出現工作效率比較低的問題,但是升級的基本原理就是這樣的,所以如果大家有什么好的方案可以提出來,共同交流學習。
?
?
?
?
總結
以上是生活随笔為你收集整理的关于html页面在线升级问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求助,为什么苹果系统安装了endnote
- 下一篇: 爱好高科技之人脸识别模块