当前位置: 首页 > 知识库问答 >
问题:

从android okhttp上传文件到codeigniter

左丘繁
2023-03-14

正如上面的问题所描述的,我正在尝试将一个文件从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 ;
        }
    }

我做错了什么?谢谢!

共有2个答案

江敏学
2023-03-14

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

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

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

吕博耘
2023-03-14

我非常肯定,CodeIgniter需要您设置$config['allowed_types']作为库初始化的一部分。默认安装没有设置“允许的类型”,因此必须在控制器中或根据文档的配置文件中显式设置它。

在初始化库之前,需要添加类似$config['allowed_types']='gifjpgpng';的内容。

话虽如此,这可能不是你唯一的问题。

 类似资料:
  • 问题内容: 我有一个问题,从选择a 获取将上述对象上传到具有此表结构的MySQL表 并且从该Java代码来看,该方法是该类的静态方法,其中它向所述MySQL数据库返回默认的DriverManager的新实例。另一件事,我使用的是包装而不是包装。 当我尝试运行该程序时,它返回错误,导致该行具有以下堆栈跟踪: 我该如何解决这个问题? 问题答案: 表示您的JDBC驱动程序未实现。 使用较旧的版本或更新驱

  • 我是vaadin的新手,我正在使用Spring和vaadin开发我的第一个应用程序。 现在我正试图在数据库中保存一个图像。我遵循了瓦丁书(upload component)中对upload component的描述 如果我想将其存储在数据库中,我需要更改什么?你能给我举个例子吗?

  • 问题内容: 当我查询此问题时,发现了很多帖子,但是它们都涉及如何从浏览器将文件上传到node.js服务器。我想将文件从node.js代码上传到另一台服务器。我试图基于对node.js的有限了解来编写它,但是它不起作用。 上面的函数被其他生成数据的代码调用。 我尝试使用curl -F“ file = @ ”上传相同的数据文件,并且上传成功。但是我的代码失败了。服务器返回一个特定于应用程序的错误,提示

  • 我们目前有一个小的web应用程序,其中一部分是文件上传。目前,我们在客户端上使用Plupload,并启用了分块功能,以允许上传大型文件。这些文件被保存在应用服务器上,当它们出现时,这些块被追加。 现在,我们正在使用AmazonS3来存储文件,并有可能使用多个应用服务器。我发现很难处理这些大块。我试着以他们为榜样,但我遇到了问题。我尝试的主要内容是这样的: 我的问题是我需要知道上传的块。当我从上传的

  • 替代解决方案使用powershell直接上传到azure Blob。拥有一个特定的目录就像一个队列,放置在其中的任何文件都将从文件服务器上传到azure blob。然后后台工作将从那里做它需要做的事情...

  • 我想使用FormData将图像上传到我的后端,但由于Ionic DEVAPP和Ionic VIEW不支持文件、文件传输和文件上传插件,我只需要使用Angular Http或HttpClient即可。 当使用DestinationType.FILE_URI时,我可以从文件中获取内部url并将其显示在img对象上,但如果没有本机文件、文件路径和文件传输插件,我无法从该url创建打字脚本文件对象。 }