Выгрузка файла с андроида охтпп на кодигнитер

Как описано в вопросе выше, я пытаюсь загрузить файл с 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 ();
вернуть $ вещи;
}
}

Что я делаю неправильно?
Спасибо!

2

Решение

Я уверен, что CodeIgniter требует от вас установить $config['allowed_types'] как часть инициализации библиотеки. Установка по умолчанию не устанавливает «разрешенные типы», поэтому вы должны явно установить его в своем контроллере или в файле конфигурации в соответствии с документация.

Вам нужно добавить что-то вроде $config['allowed_types'] = 'gif|jpg|png'; прежде чем инициализировать вашу библиотеку.

Тем не менее, это не может быть вашей единственной проблемой.

0

Другие решения

Вы можете сделать print_r($_FILES); в коде вашего сервера & посмотреть, отправляются ли данные файла в этой переменной?

Сообщение «Вы не выбрали файл для загрузки» отображается в библиотеке загрузки CodeIgniter только в том случае, если файл не был отправлен в $ _FILES.

И вы также должны попробовать повторить print_r($_POST); чтобы убедиться, что данные вашего файла поступают в $ _POST или в $ _FILES.

0

По вопросам рекламы [email protected]