首页 > 开发 > PHP > 正文

Yii2实现UploadedFile上传文件示例

2024-05-04 22:49:13
字体:
来源:转载
供稿:网友

闲来无事,整理了一下自己写的文件上传类。

通过

UploadFile::getInstance($model, $attribute);UploadFile::getInstances($model, $attribute);UploadFile::getInstanceByName($name);UploadFile::getInstancesByName($name);

把表单上传的文件赋值到  UploadedFile中的  private static $_files  中

/**   * Returns an uploaded file for the given model attribute.   * The file should be uploaded using [[/yii/widgets/ActiveField::fileInput()]].   * @param /yii/base/Model $model the data model   * @param string $attribute the attribute name. The attribute name may contain array indexes.   * For example, '[1]file' for tabular file uploading; and 'file[1]' for an element in a file array.   * @return UploadedFile the instance of the uploaded file.   * Null is returned if no file is uploaded for the specified model attribute.   * @see getInstanceByName()   */  public static function getInstance($model, $attribute)  {    $name = Html::getInputName($model, $attribute);    return static::getInstanceByName($name);  }  /**   * Returns all uploaded files for the given model attribute.   * @param /yii/base/Model $model the data model   * @param string $attribute the attribute name. The attribute name may contain array indexes   * for tabular file uploading, e.g. '[1]file'.   * @return UploadedFile[] array of UploadedFile objects.   * Empty array is returned if no available file was found for the given attribute.   */  public static function getInstances($model, $attribute)  {    $name = Html::getInputName($model, $attribute);    return static::getInstancesByName($name);  }  /**   * Returns an uploaded file according to the given file input name.   * The name can be a plain string or a string like an array element (e.g. 'Post[imageFile]', or 'Post[0][imageFile]').   * @param string $name the name of the file input field.   * @return UploadedFile the instance of the uploaded file.   * Null is returned if no file is uploaded for the specified name.   */  public static function getInstanceByName($name)  {    $files = self::loadFiles();    return isset($files[$name]) ? $files[$name] : null;  }  /**   * Returns an array of uploaded files corresponding to the specified file input name.   * This is mainly used when multiple files were uploaded and saved as 'files[0]', 'files[1]',   * 'files[n]'..., and you can retrieve them all by passing 'files' as the name.   * @param string $name the name of the array of files   * @return UploadedFile[] the array of UploadedFile objects. Empty array is returned   * if no adequate upload was found. Please note that this array will contain   * all files from all sub-arrays regardless how deeply nested they are.   */  public static function getInstancesByName($name)  {    $files = self::loadFiles();    if (isset($files[$name])) {      return [$files[$name]];    }    $results = [];    foreach ($files as $key => $file) {      if (strpos($key, "{$name}[") === 0) {        $results[] = $file;      }    }    return $results;  }            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表