在Unity3d C#中将文件上传到seafile

时间:2017-09-12 15:57:39

标签: c# curl unity3d seafile-server

我有一个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发送的数据包差异的图像。

Packet from Unity3D

Packet from curl

0 个答案:

没有答案