2012-05-04 8 views
0

小さなファイルでうまく動作するWebサイトからソースコードファイルをダウンロードしようとしていますが、MSXML2.ServerXMLHTTPを使用してWebページからデータにアクセスすると、Luaの切り捨てられたデータが返されます

以下の例サイズが146135バイトのファイルを返すされるべきであるが、私は同様にwinhttp.winhttprequest.5.1を試みたが、両方ともに切り捨てるように見える200

のステータスと141194バイトの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) 

答えて

0

私は最終的に何が起こっているのか分かりましたので、他の人のために投稿します。

ResponseBodyを使用する必要があり、ResponseTextを使用する必要がないため、ファイルがバイナリ形式で送信され、ResponseTextデータがResponseBodyと同じバイト数でUTF -8形式の場合、ファイル内の特殊文字(UTF-8の2バイトで、ResponseTextの最後から削除されている場合)の数を意味します。長さの「間違い」のレベルはわかりませんがそれを回避する方法は、ResponseBodyを使用することです。

関連する問題