首页 > 解决方案 > 如何使用从 API 上传的 Yii2 getInstancesByName 验证文件?

问题描述

我正在开发一个移动应用程序,Yii2 用作后端 API,我无法验证上传的文件的问题,知道我该怎么做吗?

    public static function uploadPicture ($vid) {
  $model = new Pictures ();
  $model->load(\Yii::$app->getRequest()->getBodyParams(), '');
  $model->vid_image = \yii\web\UploadedFile::getInstancesByName('vid_image');
  $imageDir = Yii::$app->params[ 'uploadDir' ];


  //if ( $model->validate() AND !empty($model->vid_image) ) { //does not work
  if ( !empty($model->vid_image) ) {
    foreach ( $model->vid_image as $images => $image) {
      $model->name = "t_" . time() . "_i_" . uniqid() . '.' . $image->extension;
      $model->vid = $vid;


      echo $image->hasError;//return empty
      //Yii::$app->end();
      //if ( $model->save() and $model->validate() ) { // does not work
      if(1==1 and $model->validate()){ // $model->validate() always empty!!!
        $image->saveAs($imageDir . '/' . $model->name);
        Yii::$app->getResponse()->setStatusCode(201);
        $id = implode(',', array_values($model->getPrimaryKey(true)));
        Yii::info("[pic.21] image: " . $model->name . " uploaded to: " . $imageDir, __METHOD__);
      } elseif ( $model->hasErrors() ) {
        $response = \Yii::$app->getResponse();
        $response->setStatusCode(500);
        throw new ServerErrorHttpException('Failed to create the object for unknown reason. [APIx001]');
      }
    }
  }
  return $model;
}

文件未经验证上传。

谢谢,

标签: apivalidationyii2image-uploading

解决方案


推荐阅读