邮递员

时间:2017-05-30 05:38:09

标签: php web-services file-upload yii2 postman

我正在尝试从邮递员表单数据上传图片。我无法得到输入

 URL: localhost/sampleyii/web-app/web/imageuploads
 Method: POST
 {"Content-Type":"application/x-www-form-urlencoded"}
 Form-data
  id : 2
  image : test.jpg (type:file)   

在我的yii编码中:

 $model = new TblImgUpload(); 
 print_r(Yii::$app->request->post());
 $model->load(Yii::$app->request->post(),'');

邮递员的回应:

Array
 (
[------WebKitFormBoundarySHaGMA86OHQV87iT
Content-Disposition:_form-data;_name] => "id"

sdfgdfgdf
------WebKitFormBoundarySHaGMA86OHQV87iT
Content-Disposition: form-data; name="wretr"; filename="test.jpeg"
Content-Type: image/jpeg........
....................

我试过Content-Type => '多部分/格式数据&#39 ;.但我无法得到输入请求。

我希望将post请求输入为form-data(file)作为数组。

请提前帮助谢谢。

2 个答案:

答案 0 :(得分:0)

$ model-> load()需要具有特定名称的帖子值。所以在邮递员中,'id'必须是'TblImgUpload [id]','image'必须是'TblImgUpload [image]'。

请注意,'id'和'image'必须在模型的rules method中作为'safe'属性返回,否则它们将无法以任何大量方式加载。

答案 1 :(得分:0)

使用yii\web\UploadedFile::getInstance()yii\web\UploadedFile::getInstanceByName()检索上传的文件。关于如何在official docs中实现它,有一个很好的例子。

以下是我为REST应用程序使用过一次的快速代码段:

<强>控制器:

UPDATE

<强>型号:

use Yii;
use yii\web\UploadedFile;
use app\models\UploadImageForm;

class UploadController extends ActiveController
{

  public function actionImage()
  {
      $model = new UploadImageForm(); 

      if (Yii::$app->request->isPost) {
          $model->load(Yii::$app->getRequest()->getBodyParams(), '');
          $model->imageFile = UploadedFile::getInstanceByName('imageFile'); 
          /**
           * Note: when validation fails, returning the model itself 
           * will output the failing rules on a '422' response status.
          **/
          return $model->upload() ?: $model;
      }
  }

}