Php Apigility文件上载

Php Apigility文件上载,php,zend-framework2,laminas-api-tools,Php,Zend Framework2,Laminas Api Tools,我是Zend Apigility的新手,在文件上传方面有问题。 我已经创建了一个新的rest服务,并在管理UI中配置了字段,如Apigility文档中所述: 当试图从InputFilter获取任何数据时,我只得到空值 资源控制器 public function create($data) { $inputFilter = $this->getInputFilter(); $data = $inputFilter->getValues();

我是Zend Apigility的新手,在文件上传方面有问题。 我已经创建了一个新的rest服务,并在管理UI中配置了字段,如Apigility文档中所述:

当试图从InputFilter获取任何数据时,我只得到空值

资源控制器

public function create($data)
    {
        $inputFilter = $this->getInputFilter();
        $data = $inputFilter->getValues();
        var_dump($data);
        //return $this->attachments->create($data);
    }
变量转储结果

array(1) {
  ["filedata"]=>
  NULL
}
出于测试目的,我正在使用Chrome的Postman扩展,内容类型头设置为“multipart/form data”,并将文件附加到key:filedata


我很确定,我可以使用json和base64_编码发送文件,但我宁愿保留它,直到它绝对必要。

对于那些不知道的人来说,Apigility是一个基于Zend Framework 2的框架,专门为Rest/Rpc API设计

要上传文件,请参考Jon Day提到的关于最近更新的文档

学分:

如何允许通过API上传文件

答复

Zend Framework 2提供了各种围绕文件上载的类 功能,包括一组用于验证 该文件已上载,以及是否符合特定标准 例如文件大小、扩展名、MIME类型等,使用一组筛选器 允许重命名上载的文件,以及(更罕见的情况下)重命名到 操纵文件的内容,并上传特定的文件输入 用于输入筛选器,因为需要进行文件验证 与常规数据不同的规则

目前的限制是Apigility只接受多部分/表单数据

使用Xdebug,我得到以下信息:

$data_array = $inputFilter->getValues();
$image = $data_array['images_data'];
$image数组如下所示:

   name = MemeCenter_1400658513231_337.jpg
   type = image/jpeg
   tmp_name = /tmp/phpzV3mWA
   error = 0
   size = 379580
试试这个

使用composer更新apigility。文件上载在版本1.0.3中工作 使用邮递员发送文件,但不包含标题。只需选择form-data。这对我很有用。 要移动上传的文件,请使用重命名,而不是移动上传的文件。
对于MimeType验证器,您可以使用选项“magicFile”=>false,该选项可以在zf库中修复问题,而无需进行任何修改。

您是否使用apigility v 1.0.2,我知道在此版本之前的文件上载存在一些问题?是的,我最近对整个项目进行了更新。