"指定的内容类型无效"将文件上传到Apigility时

时间:2015-05-26 08:39:31

标签: php file-upload apigility

我正在使用Zend Framework 2构建RPC API,并使用Zend Framework构建Apigility。为了测试,我使用chrome扩展Postman REST-Client。

当我使用Postman时,我可以毫无问题地执行POST请求。 但我的代码不起作用。

$client = new \Zend\Http\Client();
$client->setUri($uri)
        ->setMethod('POST')
        ->setParameterPost(
            array(
                'file' => '/home/user/Downloads/file.csv'
            )
        );

$headers = new \Zend\Http\Headers();

$headers->addHeaders(array(
    'Accept' => 'application/json;',
));

$client->setHeaders($headers);

$client->setStream();
$response = $client->send();

$file = '/home/user/Downloads/file.csv';
$file2 = '/home/user/Downloads/file2.csv';
copy($response->getStreamName(), $file);
$fp = fopen($file2, "w");
stream_copy_to_stream($response->getStream(), $fp);
$client->setStream($file);

$responce = $client->send();

echo $responce->getBody();

我尝试传递其他标头Content-Type,但会导致致命错误。 我需要传递标题才能使其正常工作?

1 个答案:

答案 0 :(得分:0)

您必须将Content-Type标题设置为multipart/form-data。您在Chrome中使用的Postman插件会自动执行此操作以进行文件上传。

所以设置你的标题如下:

$headers->addHeaders(array(
    'Accept' => 'application/json',
    'Content-Type' => 'multipart/form-data'
));

如果这不起作用,请更具体地说明您遇到的致命错误。