保存CHttpFile获得的图片文件

C不会写,C++又看不懂。我只是想写写Java维持生活啊。

References:

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();
}

标签: none

添加新评论

ali-01.gifali-58.gifali-09.gifali-23.gifali-04.gifali-46.gifali-57.gifali-22.gifali-38.gifali-13.gifali-10.gifali-34.gifali-06.gifali-37.gifali-42.gifali-35.gifali-12.gifali-30.gifali-16.gifali-54.gifali-55.gifali-59.gif

加载中……