带图像的Yii2 REST API PUT方法

时间:2017-04-14 07:54:59

标签: php rest yii yii2 put

当我传递图片时,我在PUT rest api的YII2方法中遇到问题,否则其工作正常。在POST请求其正常工作。

以下是我的代码

  /**
     * Funcion to update existing product by productID
     * 
     * @return type
     */
    public function actionUpdate($id) {
        $request = Yii::$app->request;
        $post = $request->post();
        $params = Yii::$app->request->bodyParams;
        print_r($params);
        die;
        $model = Product::findOne($id);
        $images = $model->uploadProductImages($_FILES);
        $post['images'] = implode(",", $images);
        $model->updateProduct($id, $post);
        return $post;
    }

当我尝试下面的图像是我得到的输出。

Array
(
    [-----------------------------16309270534592
Content-Disposition:_form-data;_name] => "name"

TESTP11APR
-----------------------------16309270534592
Content-Disposition: form-data; name="sku"

SKUTESTP11APR
-----------------------------16309270534592
Content-Disposition: form-data; name="images"; filename="Koala.jpg"
Content-Type: image/jpeg

????
)

然后我从swagger中移除图像字段,然后从中获取正确的数据。 问题是什么。

1 个答案:

答案 0 :(得分:0)

PHP支持某些客户端用于在服务器上存储文件的HTTP PUT方法。

PUT /path/filename.html HTTP/1.1

以下代码位于php documention,用于通过PUT上传文件:

<?php
/* PUT data comes in on the stdin stream */
$putdata = fopen("php://input", "r");

/* Open a file for writing */
$fp = fopen("myputfile.ext", "w");

/* Read the data 1 KB at a time
   and write to the file */
while ($data = fread($putdata, 1024))
  fwrite($fp, $data);

/* Close the streams */
fclose($fp);
fclose($putdata);
?>