0

我正在尝试从网站下载源代码文件,该文件适用于小文件,但一些较大的文件会被截断。

下面的示例应返回大小为 146,135 字节的文件,但返回状态为 200 的 141,194 字节之一。

我也尝试过 winhttp.winhttprequest.5.1 ,但两者似乎都在同一点截断。

我也发现不少人有类似的问题,但一直没能找到解决办法。

require('luacom')

http = luacom.CreateObject('MSXML2.ServerXMLHTTP')

http:Open("GET","http://www.family-historian.co.uk/wp-content/plugins/forced-download2/download.php?path=/wp-content/uploads/formidable/tatewise/&file=Map-Life-Facts3.fh_lua&id=190",true)
http:Send()
http:WaitForResponse(30)
print('Status: '..http.Status)
print('----------------------------------------------------------------')
headers = http:GetAllResponseHeaders()
data = http.Responsetext 
print('Data Size = '..#data)
print('----------------------------------------------------------------')
print(headers)
4

1 回答 1

0

我终于弄清楚了发生了什么,所以将其发布在这里供其他人使用。

为了避免截断,我需要使用 ResponseBody 而不是 ResponseText,似乎正在发生的是文件以二进制格式发送,ResponseText 数据与 ResponseBody 的字节数相同,但采用 UTF-8 格式,这意味着如果文件中的特殊字符(UTF-8 中的双字节从 ResponseText 的末尾删除)中的数字。我不确定长度中的“错误”在什么级别,但是避免的方法它是使用ResponseBody。

于 2012-05-09T16:53:56.703 回答