ファイルサイズはnetfileinfoで取得できるファイル情報の中に含まれているので、getstr等で取り出してください。
受信済みのデータサイズはnetsizeで取得します。
サンプルのget_binary.hspを参考にしてざっと書いてみました。
*getFileSizeでファイルサイズの取得を、*updateで進捗状況の取得と表示を行っています。
#include "hspinet.as"
*startup
url="http://hsp.tv/images/bbs/"
file="mascot8.jpg"
state=0
netinit
if stat {
dialog "接続に失敗しました。"
end
}
*main
gosub *entry
logmes strf("ファイルサイズ:%d",fileSize)
do
gosub *update
logmes strf("受信済みサイズ:%d",dataSize)
await 50
until state
gosub *exit
stop
*entry
neturl url
gosub *getFileSize
fileSize=stat
netrequest_get file
mes "ダウンロードを開始します。"
return
*getFileSize
info=""
key="Content-Length: "
val=""
netfileinfo info,file
if stat {
dialog "ファイル情報を取得できませんでした。"
return -1
}
index=instr(info,,key)
if index=-1 {
dialog "ファイルサイズを取得できませんでした。"
return -1
}
getstr val,info,index+strlen(key)
return int(val)
*update
netexec state
if fileSize=-1 {
return
}
netsize dataSize
title strf("進捗率:%d%%",dataSize*100/fileSize)
return
*exit
if state<0 {
dialog "エラーが発生しました。"
end
}
sdim buf,netgetv_size()
netgetv_data buf
mes strf("ダウンロードが完了しました。\n%d/%d bytes",dataSize,fileSize)
memfile buf,,dataSize
celload "mem:"
celput stat
return