【问题标题】:not able to download file with size more than 63kb using UnityWebRequest无法使用 UnityWebRequest 下载大小超过 63kb 的文件
【发布时间】:2021-02-04 13:54:31
【问题描述】:

我尝试从 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;

}

【问题讨论】:

  • 您确定下载链接有效吗?我从未尝试过从 Google Drive 下载这样的文件,但如果您实际获得的是前端 HTML 的一部分而不是部分文件,我不会感到惊讶。我会尝试在直接路径下托管文件,甚至设置简单的 localhost 服务器来“托管”它。
  • 在那之后你有什么错误吗?添加到@Bart 的评论:对于测试,您可以在本地文件路径上使用它。如果我在浏览器中输入 URL,它会将我转发到可以点击下载的页面……这不是下载本身!
  • 我认为你必须使用正确的 api 从谷歌驱动器下载文件

标签: unity3d server unitywebrequest


【解决方案1】:

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

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

我现在可以在哪里下载您的文件。


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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 2011-08-14
    • 1970-01-01
    • 2014-08-02
    • 1970-01-01
    相关资源
    最近更新 更多