使用volley和codeigniter将位图文件上传到服务器

时间:2018-03-29 05:22:07

标签: android codeigniter android-volley

我正在使用volley将我的位图文件上传到服务器。在服务器端,我正在使用codeigniter框架来完成这项工作,但当我尝试上传文件时,我得到了服务器的响应,

  

“您没有选择要上传的文件”

这是代码

排球

 public void uploadImage(final Context context, final Bitmap bitmap) {
        String url = "https://zenosama1111.000webhostapp.com/Upload/do_upload";
        RequestQueue requestQueue = Volley.newRequestQueue(context);
        StringRequest request = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
            }
        }) {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String,String> params = new HashMap<>();
                params.put("thumbnail", bitmapToString(bitmap));
                return params;
            }
        };
        requestQueue.add(request);
    }

服务器端

 public function do_upload()
        {
                $config['upload_path']          = './thumbnails/';
                $config['allowed_types']        = 'gif|jpg|png|jpeg';
                $config['max_size']             = 100;
                $config['max_width']            = 160;
                $config['max_height']           = 100;

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

                if ( ! $this->upload->do_upload('thumbnail'))
                {
                        echo false;
                }
                else
                {
                      echo true;
                }
                 $error = array('error' => $this->upload->display_errors());
                 echo json_encode($error);
        }

其他教程使用纯PHP代码上传文件但不在codeigniter中。 有人知道我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

$this->upload->do_upload($this->input->post('thumbnail'))$this->upload->do_upload('thumbnail')无效。

do_upload 使用$_FILES数组中的项目(不同于post数组),do_upload($param)的参数必须是<input name="userfile" type="file">的字段名称文件输入。

e.g。 do_upload('userfile') =&gt; file_put_contents($filename, $this->input->post('thumbnail'));

它不打算以您使用它的方式使用,因为您的项目位于post数组中。因此,$_FILES可能会满足您的需求。

如果您可以将项目放在Firebase数组中,那么您可能有机会使用CI上传库。