0

I'm trying to upload image to server from my Android application with Loopj library. On server side I'm using Codeigniter and file upload library. But Codeigniter always give me this error, even i tried with allowed extensions.

The file type you are attempting to upload is not allowed

This is my image upload code

public void post_image() throws JSONException

{
    RequestParams params = new RequestParams();
    params.put("id_objek", id_objek);
    params.put("id_user",id_user);
    File myFile = new File(url_gambar);
    try {
        params.put("user_file", myFile);
    } catch(FileNotFoundException e) {}

    ApiRequest.post(url_gambar, params, new JsonHttpResponseHandler() {
        @Override
        public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
            // If the response is JSONObject instead of expected JSONArray
        }

        @Override
        public void onSuccess(int statusCode, Header[] headers, JSONArray res) {

            try {
                JSONObject obj = res.getJSONObject(0);
                String status = obj.getString("status");
                String message = obj.getString("message");

                if(status=="1"){
                    Toast.makeText(getApplication(),"Sukses:"+message,Toast.LENGTH_SHORT).show();
                }else{
                    Toast.makeText(getApplication(),"Terjadi kesalahan:"+message,Toast.LENGTH_SHORT).show();
                }

            } catch (JSONException e) {
                e.printStackTrace();
            }

        }
    });
}

And this is my file upload code on server side

    if (empty($_FILES['user_file']['name'])) {
            echo '['.json_encode(array(
                'status'=>"0",
                'message'=>'Gambar kosong'
            )).']';
    }else{

            $info=null;
            $config['upload_path'] = './images/gallery';
            $config['allowed_types'] = 'gif|jpg|jpeg|png|jpeg|bmp';
            $config['max_size'] = '5000';
            $config['max_width'] = '5000';
            $config['max_height'] = '2000';
            $config['remove_spaces'] = 'true';

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

            if (!$this->upload->do_upload('user_file')) {
                echo '['.json_encode(array(
                    'status'=>"0",
                    'message'=>$this->upload->display_errors().'-'.$_FILES['user_file']['name']
                )).']';

            } else {

                $info = $this->upload->data();                
                $thumb_config['image_library'] = 'gd2';
                $thumb_config['source_image'] = $info['full_path'];
                $thumb_config['create_thumb'] = TRUE;
                $thumb_config['maintain_ratio'] = TRUE;
                $thumb_config['width'] = 600;
                $thumb_config['height'] = 600;
                $this->load->library('image_lib');
                $this->image_lib->initialize($thumb_config);
                $this->image_lib->resize();

                if ($nama_gambar == null)
                    $nama_gambar = $info['file_name'];

                echo '['.json_encode(array(
                    'status'=>"1",
                    'message'=>$nama_gambar
                )).']';
            }
    }

Any help or advice would be greatly appreciated!

bdsys
  • 1
  • 1

1 Answers1

0

Now my code is work after i change file upload code in server side. I rewrite my upload code without Codeigniter file upload library. I have been searching this issue but cannot found any answer. This is my code on server side

...
    $target_dir = "./images/gallery/";
    $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
    $uploadOk = 1;
    $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
    $message = "";
    // Check if image file is a actual image or fake image
    if(isset($_POST["submit"])) {
        $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
        if($check !== false) {
            echo "File is an image - " . $check["mime"] . ".";
            $uploadOk = 1;
        } else {
            echo "File is not an image.";
            $uploadOk = 0;
        }
    }
    // Check if file already exists
    /*
    if (file_exists($target_file)) {
        $message = "Sorry, file already exists.";
        $uploadOk = 0;
    }
    */
    // Check file size
    if ($_FILES["fileToUpload"]["size"] > 500000) {
        $message = "Gambar terlalu besar";
        $uploadOk = 0;
    }
    // Allow certain file formats
    if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
    && $imageFileType != "gif" ) {
        $message = "Format gambar hanya bole JPG, PNG dan GIF";
        $uploadOk = 0;
    }
    // Check if $uploadOk is set to 0 by an error
    if ($uploadOk == 0) {
        $message = "Terjadi kesalahan saat upload gambar";
    // if everything is ok, try to upload file
    } else {
        if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
            echo '['.json_encode(array(
                'status'=>"1",
                'message'=>"Upload gambar sukses"
            )).']';
        } else {
           echo '['.json_encode(array(
                'status'=>"0",
                'message'=>$message
            )).']';
        }
    }

I hope this will help someone who face same problem.

bdsys
  • 1
  • 1