Loopj库不使用Codeigniter文件上载

时间:2015-03-13 12:25:39

标签: java php android codeigniter loopj

我尝试使用Loopj库从我的Android应用程序上传图像到服务器。在服务器端,我使用Codeigniter和文件上传库。但Codeigniter总是给我这个错误,即使我尝试使用允许的扩展。

The file type you are attempting to upload is not allowed

这是我的图片上传代码

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();
            }

        }
    });
}

这是我在服务器端的文件上传代码

    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
                )).']';
            }
    }

非常感谢任何帮助或建议!

1 个答案:

答案 0 :(得分:0)

现在我的代码在我更改服务器端的文件上传代码后工作了。我没有Codeigniter文件上传库重写我的上传代码。我一直在搜索这个问题,但找不到任何答案。这是我在服务器端的代码

...
    $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
            )).']';
        }
    }

我希望这会帮助那些面临同样问题的人。