首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过UnityWebRequest发送图像

通过UnityWebRequest发送图像
EN

Stack Overflow用户
提问于 2021-04-13 09:37:11
回答 1查看 748关注 0票数 0

我正试图通过团结将一个图像发送到服务器。我能够用以下代码通过命令提示符实现图像的发送:

代码语言:javascript
复制
curl -H "Authorization: Token 555myToken555" -F "id=Image01" -F "image=@/home/example.png" https://mywebsite.com

但以同样的方式,我无法实现使用统一的Web请求。我在哪里提供"id=Image01“和http链接?Put()的性能也比Post()好吗?

代码语言:javascript
复制
public Texture2D tex;

UnityWebRequest unityWebRequest= UnityWebRequest.Put( tex,  texture.EncodeToPNG());

unityWebRequest.SetRequestHeader("Authorization", "Token 555myToken555");

unityWebRequest.SendWebRequest();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-13 09:50:51

首先,UnityWebRequest.Put的第一个参数不是ToString隐式返回tex.nametex,而是URI

然后注意到curl -F

(HTTP)允许curl模拟用户按下提交按钮的填充形式。--根据RFC2388,这会导致curl使用内容类型多部分/表单数据发布数据。这允许上载二进制文件等。

无论如何,这使用的是POST,而不是PUT

UnityWebRequest.Post中,您可以很容易地使用例如WWWFormAddField以及AddBinaryData来添加表单部件。

代码语言:javascript
复制
public void UploadTexture(Texture2D tex)
{
    StartCoroutine(UploadTextureRoutine(tex));
}

private IEnumerator UploadTextureRoutine(Texture2D tex)
{
    var bytes = tex.EncodeToPNG();
    var form = new WWWForm();
    form.AddField("id", "Image01");
    form.AddBinaryData("image", bytes, $"{tex.name}.png", "image/png");
    
    using(var unityWebRequest = UnityWebRequest.Post("https://mywebsite.com", form))
    {
        unityWebRequest.SetRequestHeader("Authorization", "Token 555myToken555");
    
        yield return unityWebRequest.SendWebRequest();
    
        if (unityWebRequest.result != UnityWebRequest.Result.Success) 
        {
            print($"Failed to upload {tex.name}: {unityWebRequest.result} - {unityWebRequest.error}");
        }
        else 
        {
            print($"Finished Uploading {tex.name}");
        }
    }
}

的性能也比Post()更好

他们是Completely different Protocols

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67072328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档