【问题标题】:Uploading file from android okhttp to codeigniter将文件从 android okhttp 上传到 codeigniter
【发布时间】:2016-10-23 01:08:02
【问题描述】:

如上述问题所述,我正在尝试将文件从 okhttp3 上传到服务器。

在我的方法中,我总是从 codeIgniter 部分收到“您没有选择要上传的文件”。

这是我的代码

安卓

公共无效发送项(文件项){ 响应响应 = null; MediaType mediaType = MediaType.parse(FileUtils.getMimeType(item)); 尝试 { RequestBody formBody = new MultipartBody.Builder().addFormDataPart("item", item.getName(), RequestBody.create(mediaType, item)).build(); 请求请求 = new Request.Builder().url("index.php").post(formBody).build(); 响应 = client.newCall(request).execute(); int statusCode = response.code(); // 总是 500 } 捕捉(IOException e){ e.printStackTrace(); } 最后 { 如果(响应!= null) response.close(); } }

服务器代码:

函数上传(){ $config['upload_path'] = '.../assets/...'; $this->load->library('upload', $config); $this->上传->初始化($config); $媒体 = '项目'; if (!$this->upload->do_upload($media)) { $error = array('error' => $this->upload->display_errors()); print_r($error); }别的{ $stuff = $this->upload->data(); 返回$东西; } }

我做错了什么? 谢谢!

【问题讨论】:

  • $media 里有什么?
  • codeigniter 上传库仅适用于 php 5.6 及更高版本,因此请确保正确。

标签: php android codeigniter file-upload okhttp3


【解决方案1】:

我很确定 CodeIgniter 要求您将 $config['allowed_types'] 设置为库初始化的一部分。默认安装未设置“允许的类型”,因此您必须在控制器中或根据documentation 的配置文件中明确设置它。

在初始化库之前,您需要添加 $config['allowed_types'] = 'gif|jpg|png'; 之类的内容。

也就是说,这可能不是您唯一的问题。

【讨论】:

  • allowed_types 不是强制性的,如果您想限制某些扩展,可以放置它。
  • 不同意。您可以为文件上传创建一个全局配置文件并设置 $config['allowed_types'] = "*";或者您可以在初始化之前在控制器中设置它。如果你根本不设置它,图书馆将拒绝工作。这个库的文档很糟糕。
  • 我完全错过了全局配置部分,你在这里是对的@Wade
【解决方案2】:

您能否在您的服务器代码中执行 print_r($_FILES); 并查看文件数据是否在该变量中发送?

只有在 $_FILES 中没有发送文件时,才会从 CodeIgniter 的上传库中显示“您没有选择要上传的文件”的消息。

您还应该尝试回显print_r($_POST); 以确定您的文件数据是来自$_POST 还是$_FILES。

【讨论】:

  • 这根本不是答案。
  • 当然,这可能不是答案。但是 CodeIgniter 上传库的 do_upload() 在 $_FILES 数组中查找 'item' 变量,因此它会查找 $_FILES['item'] 元素。除非你明白这一点,否则这条消息将会出现。
猜你喜欢
  • 2016-07-05
  • 1970-01-01
  • 2021-01-19
  • 1970-01-01
  • 2013-07-22
  • 2015-08-01
  • 2020-05-08
  • 2015-05-10
  • 2013-07-27
相关资源
最近更新 更多