【问题标题】:Unity Upload Image To Server With Codeigniter Not WorkingUnity 将图像上传到服务器,但 Codeigniter 不工作
【发布时间】:2019-03-30 10:25:48
【问题描述】:

我想将图像 jpg 上传到我的服务器。我试过了,但是没用。

我不知道是什么原因导致上传失败。

详细代码下方。

Unity C#

public void TakePicture(int maxSize)
    {
        if (NativeCamera.IsCameraBusy())
        {
            Debug.Log("Camera Busy");
            return;
        }
        else
        {
            NativeCamera.Permission permission = NativeCamera.TakePicture((path) =>
            {
                Debug.Log("Image path: " + path);
                if (path != null)
                {
                    // Create a Texture2D from the captured image                                        
                    Texture2D texture = NativeCamera.LoadImageAtPath(path, maxSize);
                    //snap.SetPixels(tex.GetPixels());                    

                    byte[] bytes = File.ReadAllBytes(path);
                    Debug.Log("Bytes:" + bytes);
                    Destroy(texture);

                    StartCoroutine(upload_ocr_image(bytes));

                    if (texture == null)
                    {
                        Debug.Log("Couldn't load texture from " + path);
                        return;
                    }

                    // Assign texture to a temporary quad and destroy it after 5 seconds
                    GameObject quad = GameObject.CreatePrimitive(PrimitiveType.Quad);
                    quad.transform.position = Camera.main.transform.position + Camera.main.transform.forward * 2.5f;
                    quad.transform.forward = Camera.main.transform.forward;
                    quad.transform.localScale = new Vector3(1f, texture.height / (float)texture.width, 1f);

                    Material material = quad.GetComponent<Renderer>().material;
                    if (!material.shader.isSupported) // happens when Standard shader is not included in the build
                        material.shader = Shader.Find("Legacy Shaders/Diffuse");

                    material.mainTexture = texture;

                    Destroy(quad, 5f);

                    // If a procedural texture is not destroyed manually, 
                    // it will only be freed after a scene change
                    Destroy(texture, 5f);

                }
            }, maxSize);

            Debug.Log("Permission result: " + permission);
        }

    }

    IEnumerator upload_ocr_image(byte[] bytes)
    {
        // UtilityScript.GetComponent<utility>().Sand_Clock_Loading(true);

        // yield return new WaitForSeconds(2.5f);

        WWWForm formDate = new WWWForm();

        formDate.AddField("frameCount", Time.frameCount.ToString());
        formDate.AddBinaryData("ocr_image", bytes, "ocr.jpg", "image/jpg");

        formDate.AddField("phone_code", "+61");
        formDate.AddField("phone_number", "434599859");                     

        using (UnityWebRequest www = UnityWebRequest.Post(web_url.url_upload_ocr_image, formDate))
        {
            yield return www.Send();

            //UtilityScript.GetComponent<utility>().Sand_Clock_Loading(false);

            if (www.isNetworkError)
            {
                Debug.Log(www.error);
               // UtilityScript.GetComponent<utility>().MessageBox_Check_Connection();
            }
            else
            {
                Debug.Log(www.downloadHandler.text);                
            }
        }
    }

这是服务器 codeigniter php 中的代码。

function upload_ocr_image()
    {           
        $phone_code = $this->input->post('phone_code', true);
        $phone_number = $this->input->post('phone_number', true);

        $allowedType = array(IMAGETYPE_GIF,IMAGETYPE_JPEG,IMAGETYPE_PNG);
        $imgType = exif_imagetype($_FILES['ocr_image']['tmp_name']);
        if(!in_array($imgType,$allowedType))
        {
            echo "Images Type Error. Images Type Only : GIF , JPEG, PNG";
            exit;
        }
        else
        {
            //upload original size front end slider
            $config['upload_path'] = './assets/ocr_image/';
            $config['allowed_types'] = 'gif|jpg|png|jpeg';
            $config['file_name'] = $phone_code.$phone_number;
            $config['overwrite'] = FALSE;
            $config['max_size'] = '8096';
            $config['max_width']  = '6000';
            $config['max_height']  = '6000';

            $this->load->library('upload', $config);

            if(!$this->upload->do_upload("ocr_image"))
            {
                echo "Maximum File Size Only 2 Mb Or Max Width = 2000 , Height = 2000";
                exit;
            }
            else
            {
                $img_data = $this->upload->data();

                // Create Thumbnail
                /*
                $magicianObj = new imageLib("assets/ocr_image/".$img_data["file_name"].$phone_code.$phone_number);
                $magicianObj -> resizeImage(80, 80, 0, true);
                $magicianObj -> saveImage("assets/admin/img/photos/".$img_data["raw_name"]."_thumb".$img_data["file_ext"], 100);

                $next_id = $next_id.$img_data["file_ext"];
                $thumb_name = $img_data["raw_name"]."_thumb".$img_data["file_ext"];             

                $data = array("photo_name"=>$next_id,
                              "thumb_photo_name"=>$thumb_name,
                              "create_date"=>date("Y-m-d H:i:s"));

                $this->db->insert("gallery_tbl",$data);
                */

            }
        }   
    }

没有发现错误。但它总是失败。

codeigniter PHP 中的这行代码:

if(!$this->upload->do_upload("ocr_image"))

总是返回 true

它是如何工作的?如何正确上传图片?

已编辑:

我使用统一的资产原生相机 android 和 ios 从相机拍照。

谢谢

【问题讨论】:

    标签: c# php codeigniter unity3d


    【解决方案1】:

    只需在之后添加初始化$this-&gt;upload-&gt;initialize($config);
    $this->load->library('upload', $config);并检查,还要检查上传目录路径是否正确?和目录权限

    【讨论】:

    • 不工作。问题不在 PHP 中,因为我用邮递员尝试它并且它有效。问题在于团结
    【解决方案2】:

    我终于找到了问题所在。

    只需将允许的类型扩展名设置为除了 codeigniter 上传文件中的所有扩展名。

    改变:

    $config['allowed_types'] = 'gif|jpg|png|jpeg';
    

    $config['allowed_types'] = '*';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-10
      • 1970-01-01
      • 1970-01-01
      • 2019-07-13
      • 2019-02-20
      • 1970-01-01
      • 2022-09-26
      • 2013-04-14
      相关资源
      最近更新 更多