我正在使用volley将我的位图文件上传到服务器。在服务器端,我正在使用codeigniter框架来完成这项工作,但当我尝试上传文件时,我得到了服务器的响应,
“您没有选择要上传的文件”
这是代码
排球
public void uploadImage(final Context context, final Bitmap bitmap) {
String url = "https://zenosama1111.000webhostapp.com/Upload/do_upload";
RequestQueue requestQueue = Volley.newRequestQueue(context);
StringRequest request = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> params = new HashMap<>();
params.put("thumbnail", bitmapToString(bitmap));
return params;
}
};
requestQueue.add(request);
}
服务器端
public function do_upload()
{
$config['upload_path'] = './thumbnails/';
$config['allowed_types'] = 'gif|jpg|png|jpeg';
$config['max_size'] = 100;
$config['max_width'] = 160;
$config['max_height'] = 100;
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload('thumbnail'))
{
echo false;
}
else
{
echo true;
}
$error = array('error' => $this->upload->display_errors());
echo json_encode($error);
}
其他教程使用纯PHP代码上传文件但不在codeigniter中。 有人知道我该如何解决这个问题?
答案 0 :(得分:0)
此$this->upload->do_upload($this->input->post('thumbnail'))
或$this->upload->do_upload('thumbnail')
无效。
do_upload
仅 使用$_FILES
数组中的项目(不同于post数组),do_upload($param)
的参数必须是<input name="userfile" type="file">
的字段名称文件输入。
e.g。 do_upload('userfile')
=&gt; file_put_contents($filename, $this->input->post('thumbnail'));
它不打算以您使用它的方式使用,因为您的项目位于post数组中。因此,$_FILES
可能会满足您的需求。
如果您可以将项目放在Firebase
数组中,那么您可能有机会使用CI上传库。