美文网首页
Yii2 Restful 文件上传

Yii2 Restful 文件上传

作者: ahcj_11 | 来源:发表于2017-08-08 00:39 被阅读330次

    1 新建 UploadForm

    <?php
    
    namespace app\models;
    
    use yii\base\Model;
    use yii\web\UploadedFile;
    
    class UploadForm extends Model
    {
        /**
         * @var UploadedFile
         */
        public $file;
    
        public function rules()
        {
            return [
                [['file'], 'file', 'skipOnEmpty' => false, 'extensions' => 'png, jpg'],
            ];
        }
        
        public function upload()
        {
            if ($this->validate()) {
                
                        $new_name = 'uploads/' . $this->file->baseName . '-' .time(). '.' . $this->file->extension;
                        
                        $this->file->saveAs($new_name);
                     
                       return $new_name;
                    
            } else {
                       return false;
            }
        }
    }
    

    2 在 UserController.php 中 引入 文件上传类

    //文件上传相关类
    use yii\web\UploadedFile;
    use app\models\UploadForm;
    
    
    public function actionUpload()
    {
        $model = new UploadForm();
    
        if (Yii::$app->request->isPost) 
        {
    
                  $model->file = UploadedFile::getInstanceByName('file');
    
                 $fileName = $model->upload() ;
    
                 if ( $fileName ) {
                            // 文件上传成功
                            return Util::success(  $fileName );  
                 }else{
                             return Util::error( '文件无法保存');
                 }
        }else{
                  return Util::error( '非法访问');
        }
    
    
     }
    

    3 在 web.conf 配置文件中 新增 'OPTIONS,POST upload' => 'upload'

    'urlManager' =>[
          'enablePrettyUrl' => true,
          'enableStrictParsing' => true,
          'showScriptName' => false,
          
          'rules' => [
                  ....
                  [
                      'class' => 'yii\rest\UrlRule', 
                      'controller' => 'user',
                      'extraPatterns' => [
                           'OPTIONS,POST    upload' => 'upload',
                        ]
                  ],
                  ...
            ]
            
           
    
    ]
    
    
    

    4 在 web 目录下新建 uploads 文件夹

    5 使用 postman 上传文件

    url: http://localhost:8080/users/upload
    方法选择 post, Body 选择 form-data
    key 填写 file,选择要上传的文件

    提交后可以发现 uploads 文件夹中有新的文件了

    参见 http://www.jianshu.com/p/658679dadeb0

    相关文章

      网友评论

          本文标题:Yii2 Restful 文件上传

          本文链接:https://www.haomeiwen.com/subject/lhpzlxtx.html