• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

cocos2dx-luahttp请求下载图片,使用XMLHttpRequest类

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

HttpFileDownLoadSimple.lua

local downloader = {}

--数据拆分,以没1024*5字节拆成一段,打包写入文件    (拆完再拼接,转成字符串)

local function getStrData(response)
    local totalSize = table.getn(response)
    local onePart = 1024*5
    local partData = ""
    local packTimes = math.floor(totalSize/onePart)

    print("文件大小: : " , totalSize )
    --print(" -- > pack size , times : " , totalSize , packTimes)
    for i=1,packTimes do
        local partUnPack = string.char(unpack(response,1+(i-1)*onePart , i*onePart) )
        partData = partData..partUnPack
        --print(" -- > pack new part : " , 1+(i-1)*onePart , i*onePart)
    end
    --print(" -- > pack end part : " , packTimes*onePart+1 , totalSize)
    local endUnpack = string.char(unpack(response , packTimes*onePart+1 , totalSize) )
    partData = partData..endUnpack
    return partData
end

--下载图片
function downloader:DownLoadImage(url,saveName,callBack)
    local xhr = cc.XMLHttpRequest:new()
    xhr.responseType = cc.XMLHTTPREQUEST_RESPONSE_ARRAY_BUFFER
    xhr:open("GET", url)

    --self.callBack = callBack

    local function onReadyStateChanged()
        print("---------net--------- xhr.readyState  xhr.status",xhr.readyState,xhr.status)
        if xhr.readyState == 4 and (xhr.status >= 200 and xhr.status < 207) then
            print(" ---> 下载图片返回数据 : " , xhr.statusText )
            local response   = xhr.response
            local strInfo = getStrData(response)
            io.writefile("user/"..saveName, strInfo, "w+b")
            --self:callback("down load ok" , saveName)
            --self.
            callBack(saveName)
        else
            print(" --- > error xhr.readyState is:", xhr.readyState, "xhr.status is: ",xhr.status)
            self:callbackErr(xhr.readyState, xhr.status)
        end
        if xhr.status == 200 then
            print("xhr.readyState  xhr.status",xhr.readyState,xhr.status)
            --req.callback(code,fullFileName,req)
        end

        xhr:unregisterScriptHandler()
    end

    xhr:registerScriptHandler(onReadyStateChanged)
    xhr:send()
end

cc.exports.HttpFileDownLoadSimple = downloader

return downloader

 

调用代码:

local list = {}
    list[1] = {id = 666,url = "http://life.southmoney.com/tuwen/UploadFiles_6871/201809/20180925104703150.jpg"}
    list[2] = {id = 777,url = "http://img.52z.com/upload/news/image/20180914/20180914034357_53554.jpg"}

    function downCallBack(name)
        print(name)
    end

    local u1 = list[1]
    local u2 = list[2]


    HttpFileDownLoadSimple:DownLoadImage(u1.url,"head"..u1.id..".jpg",downCallBack)

文件下载路径:(在代码里可以改)

运行目录或项目根目录 user 文件夹

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
使用redis调用lua脚本的方式对接口进行限流发布时间:2022-07-22
下一篇:
Lua学习篇⑤——流程控制发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap