如上所述,我试图将文件从okhttp3上传到服务器。
我一直在接收'您没有选择要上传的文件'在我的方法中,来自codeIgniter部分。
这是我的代码
的Android :
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 ; } }
我做错了什么? 谢谢!
答案 0 :(得分:0)
我很确定CodeIgniter要求您将$config['allowed_types']
设置为库初始化的一部分。默认安装没有设置允许的类型'因此,您必须按照docs在控制器或配置文件中明确设置它。
在初始化库之前,您需要添加$config['allowed_types'] = 'gif|jpg|png';
之类的内容。
那就是说,这可能不是你唯一的问题。
答案 1 :(得分:0)
您可以在服务器代码中执行print_r($_FILES);
吗?查看文件数据是否在该变量中发送?
消息'您没有选择要上传的文件'仅当$ _FILES中没有发送文件时,才会显示CodeIgniter的上传库。
您还应该尝试回显print_r($_POST);
以确定您的文件数据是来自$ _POST还是$ _FILES。