用C/C++写上传文件的CGI,遇到问题
2008-06-02 12:20
776 查看
工作需要必须用C/C++写一个通过IE浏览器上传文件的CGI。页面端这样写:
<form enctype="multipart/form-data" action="/cgi-bin/loadfile.exe" method="post">
<input type="file" Name="FileName" size="40">
...(省略其它代码)
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 的用法类似
<form enctype="multipart/form-data" action="/cgi-bin/loadfile.exe" method="post">
<input type="file" Name="FileName" size="40">
...(省略其它代码)
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 的用法类似
相关文章推荐
- Windows下 C++ 读取文件时遇到的问题
- php 的文件操作,上传,中常遇到的问题
- 文件上传时候可能遇到的问题
- SpringMvc上传文件遇到重复读取InputStream的问题
- Django文件上传遇到的问题
- C++ 调用C 文件遇到的编译问题
- Struts2中实现文件上传遇到的问题
- 转:关于我使用spring mvc框架做文件上传时遇到的问题
- 文件上传时,所遇到的问题
- 使用 jQuery.ajax 上传带文件的表单遇到的问题
- vue中上传文件遇到的问题
- SpringMVC上传文件遇到的问题
- struts文件上传和遇到的问题
- 在tp3.2.3中使用 FormData 对象实现表单的文件上传功能遇到的一个问题及解决方法
- 关于tomcat环境下上传大文件遇到的问题及解决办法
- SpringMVC(tomcat)文件上传(MultipartFile)遇到的一些问题及解决
- Struts2 单文件上传遇到的问题及解决方法
- jsp、servlet上传文件遇到的问题
- HTML表单上传文件时遇到PHP无法获取文件的问题
- 在使用python requests 库时,通过post上传名称为中文文件时我遇到的问题