📜  FuelPHP-文件上传

📅  最后修改于: 2020-10-25 04:25:47             🧑  作者: Mango


文件上传是表单编程中最常用的功能之一。 FuelPHP提供了一个特殊的类Upload(上传)来处理文件的上传。让我们学习如何在本章中使用Upload类上传文件。

组态

可以使用单独的配置文件fuel / app / config / upload.php配置上传类。重要的配置条目如下-

  • max_size-设置要上传文件的最大大小。 “ 0”表示上传大小不受限制

  • ext_whitelist-设置允许的文件扩展名

  • ext_blacklist-设置不允许的文件扩展名

  • type_whitelist-设置允许的文件类型。例如,MIME类型为“ text / plain”的“ text”

  • type_blacklist-设置不允许的文件类型

  • mime_whitelist-设置允许的mime文件类型。例如,“文本/纯文本”

  • mime_blacklist-设置不允许的mime文件类型

  • prefix-将上传的文件保存到服务器时,文件名中前缀的字符串

  • suffix-将上传文件保存到服务器时,文件名后缀的字符串

  • 扩展名-要设置的上传文件的扩展名

  • create_path-是否创建文件路径(如果不可用)

  • 覆盖-保存上传的文件时是否覆盖现有文件

  • auto_rename-在保存上传的文件时是否通过添加序列号来重命名文件

  • randomize-是否创建随机的32个字符的名称来保存上传的文件

上载方法

Upload类提供用于处理和保存用户上传的文件的选项。每个处理过的文件(保存之前)在结果数组中将具有以下信息。

  • 字段-表单字段的名称

  • 名称-上传文件的名称

  • type-浏览器定义的文件类型

  • mimetype-由上载类定义的文件类型

  • 文件-上载文件的临时位置的全限定名称

  • filename-上传文件的文件名

  • 扩展名-上传文件的扩展名

  • 大小-以字节为单位上传的文件大小

  • errors-具有错误代码和消息的错误数组

  • 错误-是否设置数组错误以及上传失败的原因(如果上传失败)

将文件保存在服务器中后,结果数组也将具有以下信息。

  • saved_to-保存上载文件的标准路径

  • saved_as-已保存文件的名称

  • 错误-更新错误数组

现在,让我们看看Upload类的方法。

已验证

如果用户上传了任何有效文件,则is_valid返回true。

// do we have any uploaded files to save? 
if (Upload::is_valid()) { 
   // process  
} 

get_files

get_files将所有上传的文件作为多维数组返回。如果指定了表单文件输入的索引/名称,则它将仅返回与指定文件输入相关的上载文件。

foreach(Upload::get_files() as $file) { 
   // do something with the file info 
}  
if ( Upload::get_files(0)) { 
   // do something 
}

get_errors

如果上载一个或多个文件失败,则get_errors返回错误数组。如果指定了表单文件输入名称的索引/名称,则它将仅返回与指定文件输入有关的错误。

foreach(Upload::get_errors() as $file) { 
   // do something with the file info 
}  
if (Upload::get_errors('myimage')) { 
   // do something 
} 

处理

过程是指收集有关上载文件的信息的实际过程。我们可以使用数组提供新的自定义配置。如果未指定配置,则它将使用fuel / app / config / upload.php中定义的配置

Upload::process (array( 
   'auto_rename' => false, 
   'overwrite'   => true 
));

保存是指将所有经过验证的文件保存在适当位置的实际过程。我们可以指定索引以仅保存该特定条目。

Upload::save();
Upload::save(0);
Upload::save(0, 3); 

工作实例

让我们在员工示例中创建一个新的控制器Controller_Upload来测试上传功能。

步骤1-创建一个文件, fuel / app / classes / controller / upload.php 。创建上传控制器。

步骤2-创建一个新动作get_upload。

步骤3-为创建的动作创建一个新视图。

Select image to upload:

步骤4-创建一个新的动作post_action来处理上传的文件。

 DOCROOT.'files', 
            'randomize' => true, 
            'ext_whitelist' => array('img', 'jpg', 'jpeg', 'gif', 'png'), 
         );  
         Upload::process($config);  
         // if there are any valid files 
         
         if (Upload::is_valid()) { 
            Upload::save(); 
            echo "success"; 
         } else { 
            // and process any errors 
            foreach (Upload::get_errors() as $file) { 
               echo var_dump($file); 
            } 
         } 
      } 
   }      

最后,通过请求URL http:// localhost:8080 / upload / index运行应用程序,然后尝试上传文件。

结果

上传文件