1. 程式人生 > >cgi 上傳檔案(c 語言) 進度條顯示

cgi 上傳檔案(c 語言) 進度條顯示

  1. //虛擬機器上搭建apache伺服器上傳檔案
  2. //1.程式碼:
  3. #include "stdio.h"
  4. #include "string.h"
  5. #include "stdlib.h"
  6. #include "dirent.h"
  7. #include <wchar.h>
  8. #include <assert.h>
  9. staticint atoii (char *zzzz)  
  10. {  
  11.   int i = 0;  
  12.   int num=0;  
  13. for(i=0;i<20;i++)  
  14. {  
  15.   if(zzzz[i] >= '0' && zzzz[i] <= 
    '9')  
  16.     {  
  17.       num = num * 10 + (zzzz[i] - '0');  
  18.     }else
  19.     {  
  20.             break;  
  21.     }  
  22. }  
  23.   return num;  
  24. }  
  25. char* getCgiData(FILE* fp, char* requestmethod)  
  26. {  
  27.        char* input;  
  28.        int len;  
  29.        char *pppp;  
  30.        int size = 1024;  
  31.        int i = 0;  
  32.      if(!strcmp(requestmethod, "GET"))  
  33.        {  
  34.               input = getenv("QUERY_STRING");  
  35.               return input;  
  36.        }  
  37.        elseif (!strcmp(requestmethod, "POST"))  
  38.        {  
  39.             pppp=getenv("CONTENT_LENGTH");  
  40.              len = atoii(pppp);  
  41.               input = (char
    *)malloc(sizeof(char)*(size + 1));      
  42.               if (len == 0)  
  43.               {  
  44.                      input[0] = '\0';  
  45.                      return input;  
  46.               }  
  47.         fgets(input, len+1, stdin);  
  48.             input[len]='\0';  
  49.          return input;  
  50.        }  
  51.        return NULL;  
  52. }  
  53. static unsigned int tmppp=0;  
  54. char *getFileName(unsigned char *req)  
  55. {  
  56.     int i;  
  57.     int leng;  
  58.     tmppp=0;  
  59.     char *psz1; char *psz2;  
  60.     unsigned char *cur_post,*buf;  
  61.     // get filename keyword
  62.     if ((psz1=strstr(req, "filename=")) == NULL)  
  63.     {  
  64.     return (char *)&tmppp;  
  65.     }  
  66.     // get pointer to actual filename (it's in quotes)
  67.     psz1+=strlen("filename=");  
  68.     if ((psz1 = strtok(psz1, "\"")) == NULL)  
  69.     {  
  70.     return (char *)&tmppp;  
  71.     }  
  72.     // remove leading path for both PC and UNIX systems
  73.     if ((psz2 = strrchr(psz1,'\\')) != NULL)  
  74.     {  
  75.     psz1 = psz2+1;  
  76.     }  
  77.     if ((psz2 = strrchr(psz1,'/')) != NULL)  
  78.     {  
  79.     psz1 = psz2+1;  
  80.     }  
  81.     return psz1;  
  82. }  
  83. main()  
  84. {  
  85.     char *reqMethod;  
  86.     char *wp;  
  87.     char *var=NULL;  
  88.     int len;  
  89.     long total,i,count;  
  90.     char *fileName,*ps1,*ps2;  
  91.     char *fileN;  
  92.     char Boundary[256];  
  93.     char errorBuf[200]="";  
  94.     char tmpBuf[512];  
  95.     char filePath[256]="/usr/local/apache2/webdav/";//directory of uploaded file
  96.     FILE *fileBuf=NULL;  
  97.     reqMethod=getenv("REQUEST_METHOD");  
  98.     len=atoii(getenv("CONTENT_LENGTH"));  
  99.     printf("%s","Content-type:text/html \r\n\r\n");  
  100.     //printf("<html><head><meta http-equiv=\"Content-Type\" content=\"text/html;charset=UTF-8\"></head>");
  101.     Boundary[0] = '\r';  
  102.     Boundary[1] = '\n';  
  103.     Boundary[2] = '\0';  
  104.     if (fgets(&Boundary[2], sizeof(Boundary)-2, stdin) == NULL)  
  105.     {  
  106.         sprintf(errorBuf,"%s","Get boundary failed !");  
  107.         goto error;  
  108.     }  
  109.     //strip terminating CR / LF
  110.     if ((ps1=strchr(&Boundary[2],'\r')) != NULL)  
  111.     {  
  112.         *ps1 = '\0';  
  113.     }  
  114. 相關推薦

    cgi 檔案(c 語言) 進度顯示

    //虛擬機器上搭建apache伺服器上傳檔案 //1.程式碼: #include "stdio.h" #include "string.h" #include "stdlib.h" #include "dirent.h" #include <wchar.h> #i

    HTML5 jQuery+FormData 非同步檔案,帶進度

    利用jQuery和html5的FormData非同步上傳檔案的好處是: 實現很簡單很方便地支援進度條很方便地進行擴充套件和美化 先看看效果圖: 圖片上傳後的結果: 實現步驟如下: 第二步:上傳頁面的html程式碼: [html] view plain

    curl post表單檔案(C++)

    最近測試如何上傳檔案到伺服器。原來傳照片一致通過binary 形式傳檔案,或者把圖片base64編碼傳圖片。一致沒有用form-data 表單形式傳送資料,今天嘗試下如何使用libcurl提供的API上傳檔案。 Sample code: #include <

    springmvc 後臺實現監聽檔案大小及進度

    一、首先需要自定義一個監聽進度的listener       import javax.servlet.http.HttpSession; import org.apache.commons.fileupload.Progres

    Linux下tftp檔案失敗的幾原因

    1.  Error code 0: Permission denied 主目錄沒有寫許可權, 可以 chmod  0777  /var/lib/tftpboot 2.Error code 1: File not found 在/etc/xinetd.d/tftp配置檔案中

    JS 檔案讀取的進度顯示方法(FileReader、onprogress)——20181116

    這裡FileReader只是從磁碟把檔案讀取到瀏覽器,並沒有傳送到伺服器。參考連結1       參考連結2 <!DOCTYPE html> <html > <head> <meta charset="UTF-8"

    HTML 檔案、過濾型別以及顯示大小

    HTML: <h>檔案上傳只支援.xlsx格式</h> <form action="/upload" method="post" enctype="multipart/form-data"> <input type="file"

    python實現檔案下載(包含進度顯示檔案大小顯示,下載速度顯示)

    不多說了,直接上程式碼記錄: #!/usr/bin/lgy #-*-coding:utf-8-*- import urllib2,threading from PyQt4.QtGui import * from PyQt4.QtCore import * from pu

    Extjs 使用fileupload外掛檔案進度顯示

    一.首先我們看看官方給出的外掛的解釋: 一個檔案上傳表單項具有自定義的樣式,並且可以控制按鈕的文字和 像文字表單的空文字類似的其他特性。 它使用一個隱藏的檔案輸入元素,並在使用者選擇檔案後 在form提交的同時執行實際的檔案上傳。 因為沒有安全的跨瀏覽器以程式設計的方式對file表單項設值的方式,

    AngularJS PrimeNG 檔案 進度

    1.思路: 使用p-progressBar,建立一個新畫面,浮在p-fileUpload元件所在頁面上方。當檔案上傳進度達到100%時,隱藏該新頁面。 2.父頁面程式碼實現: 使用AngularJ

    SpringMVC之檔案進度顯示

    親測可用 1、mvc-config.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"   

    H5檔案進度

    首先推薦一波我的網站 iscoser.com。 關於原生標籤上傳檔案,之前有寫過兩篇:分別是H5標籤上傳檔案(功能實現)和H5標籤上傳檔案(樣式美化)。 這一篇我們要講的是上傳檔案時的上傳進度監聽(進度條的實現)依賴jQuery !。 jQuery預設使用的XMLHttpRequ

    ajax利用html5新特性帶進度檔案

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <

    ajax FormData檔案和資料,進度顯示

    http://www.jb51.net/article/114003.htm 一、基於input 方式formData上傳檔案和資料: <divclass="startleft describebox"> <labelclass="title">商

    檔案進度顯示

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Insert title here</title> <style>

    1次ajax請求(XMLHttpRequest)多個檔案,支援進度

    封裝了一個ajax多檔案上傳,功能就是選擇多個檔案,用ajax上傳。 呼叫方式也很簡單,寫一個json物件做為引數配置,設定要上傳的服務端url以及選擇檔案和上傳完成等的事件處理函式,new一個AjaxUploadX物件,呼叫selectFiles方法選擇檔案,呼叫upla

    C#在WinForm下使用HttpWebRequest檔案顯示進度

    這段時間因專案需要,要實現WinForm下的檔案上傳,個人覺得采用FTP方法太麻煩,還得配置FTP伺服器,要通過防火牆也是一個麻煩。本來打算採用WebClient方法,但是採用這個方法實現後,進度條很短時間後就達到最大值,要等待一段時間才能傳送完畢,要是檔案太大(我這裡測試約

    原生JS實現ajax檔案顯示進度

    html程式碼 <progress id="progressbar" value="0" max="100" style="width:300px;"></progress>

    oss檔案進度展示

    使用者上傳檔案至oss的時候需要增加一個進度條展示,查看了官方文件及網上幾篇部落格後整理一下相關思路,在此記錄一下自己的成長。 在此以上傳視訊為例,自定義監聽監聽檔案上傳進度,通過將位元組數和總位元組數之間比例寫入session中返回給前端進行進度展示。     priv

    簡單的實現檔案進度

    實現檔案上傳(即input標籤的file型別),可以使用XMLHttpRequest物件中的upload屬性的progress事件,該事件的事件物件可以返回上傳進度相關資料 XMLHttpRequestObject.upload.onprogress = function(e){}; 其中e.loaded表示