簡體   English   中英

從android okhttp上傳文件到codeigniter

[英]Uploading file from android okhttp to codeigniter

如上述問題所述,我正在嘗試將文件從okhttp3上傳到服務器。

我總是從codeIgniter部分收到“您沒有選擇要上傳的文件”。

這是我的代碼

安卓

public void sendItem(File item) {
        Response response = null;
        MediaType mediaType = MediaType.parse(FileUtils.getMimeType(item));
        try {
            RequestBody formBody = new MultipartBody.Builder().addFormDataPart("item", item.getName(), RequestBody.create(mediaType, item)).build();

            Request request = new Request.Builder().url("index.php").post(formBody).build();

            response = client.newCall(request).execute();
            int statusCode = response.code(); // always 500

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

        } finally {
            if (response != null)
                response.close();
        }
    }

服務器代碼:

function upload(){
        $config['upload_path'] = '.../assets/...';
        $this->load->library('upload', $config);
        $this->upload->initialize($config);

        $media = 'item';
        if (!$this->upload->do_upload($media)) {
            $error = array('error' => $this->upload->display_errors());
            print_r($error);
        }else{
            $stuff = $this->upload->data();
            return $stuff ;
        }
    }

我究竟做錯了什么? 謝謝!

我很確定CodeIgniter要求您將$config['allowed_types']為庫初始化的一部分。 默認安裝未設置“允許的類型”,因此您必須根據文檔在控制器或配置文件中顯式設置它。

您需要添加類似$config['allowed_types'] = 'gif|jpg|png'; 在初始化庫之前。

也就是說,這可能不是您唯一的問題。

你能做一個print_r($_FILES); 在您的服務器代碼中,並查看文件數據是否正在該變量中發送?

僅當在$ _FILES中沒有發送文件時,才會從CodeIgniter的Upload庫中顯示“您沒有選擇要上傳的文件”消息。

並且您還應該嘗試回顯print_r($_POST); 確定您的文件數據來自$ _POST還是$ _FILES。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM