分享

URLDownloadToCacheFile的疑问

 quasiceo 2014-07-17

URLDownloadToCacheFile的疑问  

2010-11-26 17:12:11|  分类: 学习笔记 |  标签:疑问  拷贝  路径   |举报 |字号 订阅

给我的富文本编辑器添加从浏览器拷贝内容功能时发现的问题,有时候URLDownloadToCacheFile下载的临时文件和IE下载的文件不一样,特别是那些需要服务器解释的IMG引用路径,如:http://os.blog.163.com/common/ava.s?host=simplesource&b=1&r=4117285956 路径和内容都有区别,费解,不知道有没有替代函数。QQ的编辑框和word拷贝这些文件是正常的,不知道他们怎么实现的。

URLDownloadToCacheFile的疑问 - 简单代码 - 简单代码

 20101129

找到了一个办法,在URLDownloadToCacheFile之前先找一下,虽然感觉效率有点低,但是没找到更好的办法前只能这样了。

代码如下

static CString URLToCache(const char * szUrl)
{
    LPINTERNET_CACHE_ENTRY_INFO pEntry = NULL;
    HANDLE hdir = NULL;
    HANDLE hTemp = NULL;
    unsigned long size = 4096;

    int i = 0;
    BOOL isEnd = FALSE;
    BOOL ret = TRUE;
    CString sPath = "";
    do
    {
        pEntry = (LPINTERNET_CACHE_ENTRY_INFO) new char[size];
        pEntry->dwStructSize = size;
        if(hdir == NULL)
        {
            hdir = FindFirstUrlCacheEntry(NULL, pEntry, &size);
            if(hdir)
            {
                if(strcmp(szUrl, strlwr(pEntry->lpszSourceUrlName)) == 0)
                {
                    sPath = pEntry->lpszLocalFileName;
                    isEnd = TRUE;
                }
            }
        }
        else
        {
            ret = FindNextUrlCacheEntry(hdir, pEntry, &size);
            if(ret)
            {
                if(strcmp(szUrl, strlwr(pEntry->lpszSourceUrlName)) == 0)
                {
                    sPath = pEntry->lpszLocalFileName;
                    isEnd = TRUE;
                }
            }
        }

        if(ret == TRUE)
        {
            ret = FindNextUrlCacheEntry(hdir, pEntry, &size);
            if (ret)
            {
                if(strcmp(szUrl, strlwr(pEntry->lpszSourceUrlName)) == 0)
                {
                    sPath = pEntry->lpszLocalFileName;
                    isEnd = TRUE;
                }
            }
            while (ret)
            {
                ret = FindNextUrlCacheEntry(hdir, pEntry, &size);
                if (ret)
                {
                    if(strcmp(szUrl, strlwr(pEntry->lpszSourceUrlName)) == 0)
                    {
                        sPath = pEntry->lpszLocalFileName;
                        isEnd = TRUE;
                    }
                }
            }
        }
        else
        {
            isEnd = TRUE;
        }

        delete[] pEntry;
    }
    while (isEnd == FALSE);

    if(sPath == "")
    {
        char tmp[1024];
        HRESULT hr = URLDownloadToCacheFile(NULL, szUrl, tmp, 1023, 0, NULL);
        if(SUCCEEDED(hr))
        {
            sPath = tmp;
        }
    }
    return sPath;
}

PS:尝试过GetUrlCacheEntryInfoEx,其路径结果跟URLDownloadToCacheFile是一样的,怀疑URLDownloadToCacheFile里面封装的就是GetUrlCacheEntryInfoEx

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多