Как описано в вопросе выше, я пытаюсь загрузить файл с okhttp3 на сервер.
Я всегда получаю сообщение «Вы не выбрали файл для загрузки» в моем подходе со стороны codeIgniter.
Вот мой код
Android:
public void sendItem (File item) { Ответ ответ = ноль; MediaType mediaType = MediaType.parse (FileUtils.getMimeType (item)); пытаться { RequestBody formBody = new MultipartBody.Builder (). AddFormDataPart ("item", item.getName (), RequestBody.create (mediaType, item)). Build (); Request request = новый Request.Builder (). Url ("index.php"). Post (formBody) .build (); response = client.newCall (запрос) .execute (); int statusCode = response.code (); // всегда 500 } catch (IOException e) { e.printStackTrace (); } в конце концов { если (ответ! = ноль) response.close (); } }
Код сервера:
функция upload () { $ config ['upload_path'] = '... / assets / ...'; $ this-> load-> library ('upload', $ config); $ This-> upload-> Initialize (конфигурации $); $ media = 'item'; if (! $ this-> upload-> do_upload ($ media)) { $ error = array ('error' => $ this-> upload-> display_errors ()); print_r ($ ошибка); } Еще { $ stuff = $ this-> upload-> data (); вернуть $ вещи; } }
Что я делаю неправильно?
Спасибо!
Я уверен, что CodeIgniter требует от вас установить $config['allowed_types']
как часть инициализации библиотеки. Установка по умолчанию не устанавливает «разрешенные типы», поэтому вы должны явно установить его в своем контроллере или в файле конфигурации в соответствии с документация.
Вам нужно добавить что-то вроде $config['allowed_types'] = 'gif|jpg|png';
прежде чем инициализировать вашу библиотеку.
Тем не менее, это не может быть вашей единственной проблемой.
Вы можете сделать print_r($_FILES);
в коде вашего сервера & посмотреть, отправляются ли данные файла в этой переменной?
Сообщение «Вы не выбрали файл для загрузки» отображается в библиотеке загрузки CodeIgniter только в том случае, если файл не был отправлен в $ _FILES.
И вы также должны попробовать повторить print_r($_POST);
чтобы убедиться, что данные вашего файла поступают в $ _POST или в $ _FILES.