无法使用 UnityWebRequest 下载大小超过 63kb 的文件

问题描述

我尝试从 url 下载资产包,但在下载 63kb 后请求继续取消。谁能向我解释为什么会发生这种情况?

我的代码

public IEnumerator DL()
{
    string downloadlink = "https://drive.google.com/file/d/1OGyrB4-MQfo-HVom9ENvV4dn312_wL4Q/view?usp=sharing";
    string filepath = Application.persistentDataPath + "/electroplatingNN";
    //Download
    UnityWebRequest dlreq = new UnityWebRequest(downloadlink);
    dlreq.downloadHandler = new DownloadHandlerFile(filepath);
    dlreq.timeout = 15;

    UnityWebRequestAsyncoperation op = dlreq.SendWebRequest();

    while (!op.isDone)
    {
        //here you can see download progress
        Debug.Log(dlreq.downloadedBytes / 1000 + "KB");

        yield return null;
    }

    if (dlreq.isNetworkError || dlreq.isHttpError)
    {
        Debug.Log(dlreq.error);
    }
    else
    {
        Debug.Log("download success");
    }

    dlreq.dispose();

    yield return null;

}

解决方法

正如评论中已经提到的,问题不在 UnityWebrequest 中,而是 Google Drive 并没有像您期望的那样简单地下载您的文件。

相反,您下载的数据实际上只是允许您下载它的网页。如果我只是在浏览器中打开你的文件,我会得到一个看起来像这样的页面

enter image description here

我现在可以下载您的文件的位置。


有像 thisthis 这样的软件包,它们实现了从 Unity 中的 Google Drive API 实际下载文件所需的东西。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...