TransWikia.com

UnityWebRequestを使用して中断したファイルダウンロードを再開させる方法

スタック・オーバーフロー Asked by Nax藤極 on August 16, 2020

UnityWebRequestを使用して中断したファイルダウンロードを再開させる方法

Unityで開発を行っております。
DownloadHandlerScriptクラスを継承したダウンロードハンドラを作成しました。

private class FileDownloadHandler : DownloadHandlerScript
{
    FileStream fs;
    int offset = 0;
    int length = 0;
    
    public FileDownloadHandler(string path, byte[] buffer)
        : base(buffer)
    {
        fs = new FileStream(path, FileMode.Create, FileAccess.Write);
    }
    // データを受信すると呼び出される
    protected override bool ReceiveData(byte[] data, int dataLength)
    {
        fs.Write(data, 0, dataLength);
        offset += dataLength;
        return true;
    }
    // ダウンロードが終わった時に呼び出される
    protected override void CompleteContent()
    {
        fs.Flush();
        fs.Close();
    }
    // ダウンロードするサイズ
    protected override void ReceiveContentLength(int contentLength)
    {
        length = contentLength;
    }
    // downloadProgressの値
    protected override float GetProgress()
    {
        if (length == 0)
            return 0.0f;
    
        return (float)offset / length;
    }
}

こちらを改良してファイルダウンロードを何らかの原因で中断した場合、
ファイルダウンロードを再開できるようにしたいと考えております。
通信処理は以下のような形です。

{
    UnityWebRequest www = new UnityWebRequest(a_url);
    byte[] l_bytes = new byte[300 * 1024];
    www.downloadHandler = new FileDownloadHandler( _path, l_bytes);

    www.Send();

    while (!www.isDone)
    {
        _loadingProgress = www.downloadProgress;
        yield return null;
    }
    l_bytes = null;
}

途中まで読み込んでいたファイルの確保、通信再開地点の設定など、どうすればよいのでしょうか?よろしくお願いします。

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP