我在PHP中创建了一个FileUploader类,用于验证和上传任何提交的文件。

我正在做一个项目,所以我正在编写面向对象的PHP。因此,我创建了一个名为FileUploader的类。此类具有验证文件大小和文件扩展名类型以及创建目录(如果不存在)的所有方法。 一切正常,但我注意到它只创建空目录,不会移动上传的文件。我尝试从存储的属性访问文件错误,但它总是给出 0 作为错误代码

然后我有另一个 php 脚本,我通过使用 $_FILES 变量进程实例化 FileUploader 类来处理上传的文件.php


  require_once "../vendor/autoload.php";

  

  use Utility\Classes\FileUploader;

  //Instantiate new FileUploader with the files to be uploaded.

          $LogoUploader = new FileUploader($_FILES['logo'], ['.png', '.jpg']);

//validate logo size and type - Upload to folder if everything Ok

          $logo_validated = $LogoUploader->validate();

//upload files that passed validation

          if ($logo_validated) {

              $LogoUploader->set_target($location);

              $LogoUploader->set_backlink_step('../');

              $ltarget = $LogoUploader->upload_file();


              if (!$ltarget) {

                  //upload error

                  print_error($LogoUploader->get_error_msg());

                  exit;

              } else { //upload success

                  print "Logo uploaded successfully";

              }

          } else { //validation error

              print_error($LogoUploader->get_error_msg());

              exit;

          }

请问我做错了什么??一切正常,验证工作正常,用户可以设置上传目标,如果不存在,则将创建它,但它不会将文件上传到创建的目录或我的工作目录中的其他任何地方


红颜莎娜
浏览 60回答 1
1回答

长风秋雁

我认为您需要更改以下行 if (move_uploaded_file($this->tmp_file_name,  $target)) {自if (move_uploaded_file( $this->get_tmp_name(),  $target )) {在方法中。结婚upload_filepublic function upload_file(){    $this->create_dir();    $target = $this->backlink_step . $this->target_location .  "/" . $this->get_file_name();        if (move_uploaded_file( $this->get_tmp_name(),  $target )) {        return $target;    } else {        die("tmp_name: {$this->get_tmp_name()} \n target: {$target} \n Error: {$this->File['error']}");    }}
打开App,查看更多内容
随时随地看视频慕课网APP