1

我有一个 Unity3d 项目,我想从中上传和下载文件。我的下载(以及其他与 Seafile API 相关的调用)正常工作,但我似乎无法正常上传。我还可以使用 curl 和以下命令制作上传部分功能

curl -H "Authorization: Token token-goes-here" -F file=@E:/sample.png -F filename=sample.png -F parent_dir=/ http://url.here/upload-api/1a95255d-ac0c-44d0-bfa5-dd2a46f2cc89

但是,我一直无法使用 WWW 或 UnityWebRequest 实现相同类型的调用。这是使用 WWW 的代码示例(我在这里故意省略了授权令牌,但添加它对上传没有影响)。我还使用 UnityWebRequest 构建了一个类似的调用,但我遇到了同样的问题,Seafile 总是返回一个错误的请求 - 错误。

    WWW localFile = new WWW("file:///" + "E:/sample.png");
    WWWForm requestData = new WWWForm();
    requestData.AddBinaryData("file", localFile.bytes);
    requestData.AddField("parent_dir", "/");
    requestData.AddField("filename", "sample.png");

    WWW req = new WWW(upload_url, requestData);
    yield return req;

在观察 Unity3D 发送的数据包并将它们与使用 curl 发送的数据包进行比较时,我注意到了一个小的差异,但我不知道是什么原因造成的。curl发送的数据包分为4部分,Unity3D发送的数据包分为2部分。我试图弄乱边界,我尝试按照 Unity3D 论坛中的建议使用 UnityWebRequest 构建数据包,我还尝试手动构建数据包并使用 HttpWebRequest,但我总是遇到与 curl -packet 相同的问题和 Unity3D -packet 有一个非常细微的差异,这在某种程度上不适用于 Seafile。我附上了 curl 和 Unity 发送的数据包差异的图像。

来自 Unity3D 的数据包

来自 curl 的数据包

4

0 回答 0