用C/C++写上传文件的CGI,遇到问题

工作需要必须用C/C++写一个通过IE浏览器上传文件的CGI。页面端这样写:  
 

 
   
  ...(省略其它代码)  
  CGI程序那边,先用getenv("CONTENT_LENGTH")取到上传数据的长度,然后malloc一个buf,接着用一个wile循环调fread从stdin中读数据,但无论如何都读不够getenv("CONTENT_LENGTH")返回的长度。我在IIS和IBM   HTTP   SERVER(用的是Apache的核心)上都试过,都不行。

答案:

那是因为你没有把文件读模式改为二进制读,   这可是我摸索了好多天的成果,   现在吐血相告,     如果不给分,   哼哼!   记住啊...  
   
  -----------------------------------------  
  C++   用法  
   
  //   设置读模式为二进制  
  _setmode(_fileno(stdin),   _O_BINARY);  
   
  //   从标准输入读入数据  
  std::cin.read(buf,   len);  
   
  //   恢复标准控制台读数据模式为文本模式  
  _setmode(_fileno(stdin),   _O_TEXT);  
   
  C   的用法类似  

你可能感兴趣的:(引用)