保存CHttpFile获得的图片文件
C不会写,C++又看不懂。我只是想写写Java维持生活啊。
References:
- http://www.cnblogs.com/cy163/archive/2007/05/26/760426.html
- http://blog.csdn.net/lightlater/article/details/6364931
C/C++对文件的操作还是很多的,现遇到了要保存图片的需求。
算了,心情不太好,不想写太多。
主要就是图片大小的问题,在下面代码的循环中,每次往图片里写入的大小都是读取的size大小。这里我设置的缓冲大小是1024个字节。原本我以为只有最后一次会读不满1024,在读取图片内容过程中应该都是1024字节的。不过实际读取的时候不只是最后一次读不满,在过程中也会有1~2次不满1024自己的情况。这就导致了图片保存后文件异常或错误。改成每次只保存读取的字节数后就正常了,就这些吧。
const unsigned short img_buffer_size = 1024;//一次读取图片的缓冲大小
DWORD dwStatusCode;
chttpFile->QueryInfoStatusCode(dwStatusCode);
if (dwStatusCode == HTTP_STATUS_OK) //服务器返回码正常
{
ofstream outImgFile(fileName, ios::binary);
if (!outImgFile) { abort(); } //退出程序
int size = 0;
byte szChars[img_buffer_size];
do
{
size = chttpFile->Read((void*)szChars, img_buffer_size); //读取图片
//错误的写法 outImgFile.write((char*)szChars, img_buffer_size); //持续写入图片内容
outImgFile.write((char*)szChars, size); //持续写入图片内容
} while (size > 0);
outImgFile.close();
}