为啥用wininet传送过去的图片无法正常打开

为何用wininet传送过去的图片无法正常打开
我想将本地硬盘中的图片文件aaa.jpg发送到一个服务器中去,服务器端收到了信息,但服务器得到的图片无法正常显示出来,很明显是上传时图片数据不对,请教高人:如何用wininet上传图片?也就是上传图片时的图片数据如何取得并发送?
(附关键代码:)

//////读取图片数据到缓冲区
CString str="";
int filepos=0;
int readLen;
FILE*   f2=fopen( "aaa.jpg", "r+b");//二进制打开
fseek(f2,0,SEEK_END);//文件结尾
int fileSize=ftell(f2);//文件大小
char* buf=new char[fileSize];
fseek(f2,0,SEEK_SET);//文件开头
do{ 
readLen = fread(buf,sizeof(char),fileSize,f2); 
if(readLen > 0) 

filepos += readLen; 

}while(filepos < fileSize); //循环读取文件
fclose(f2);
str=buf;//post图片数据
delete[] buf;        

//////上传图片
CString strBoundary="_____bianjie123456789_____\r\n";
CString szFormData=strBoundary+"Content-Disposition:form-data;name=\"file1\";filename=\"c:\\abc.jpg\"\r\nContent-Type:application/octet-stream\r\n\r\n"+str+strBoundary;
......
LPVOID pBuf = (LPVOID)szFormData.GetBuffer(szFormData.GetLength());
HttpSendRequest(hRequest,"Content-Type: multipart/form-data;boundary="+strBoundary+"Accept-Language: zh-cn\r\n",-1,pBuf,szFormData.GetLength());

------最佳解决方案--------------------
先在本地保存一下呢?
------其他解决方案--------------------
估计数据丢失 有成功过吗?

------其他解决方案--------------------
CString的GetLength会把图片中的'0'截断吧……