您的位置:首页 > Web前端 > HTML

关于html页面在线升级问题

2017-02-13 17:06 225 查看
       关于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网页的在线升级,这里可能会出现工作效率比较低的问题,但是升级的基本原理就是这样的,所以如果大家有什么好的方案可以提出来,共同交流学习。

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: