【问题标题】:How to create destination (Folder) in PHP while using move_uploaded_file()?使用 move_uploaded_file() 时如何在 PHP 中创建目标(文件夹)?
【发布时间】:2011-05-22 01:27:38
【问题描述】:

我想用 PHP 上传文件,我使用 move_uplload_files 将它们复制到我想要的目标文件夹,一切正常:

if (move_uploaded_file($_FILES['uploadfile']['tmp_name'], './uploades/'))
die("success");
else
die("error");

但是当我尝试这个时

$rand =  chr(rand(97, 122)). chr(rand(97, 122)). chr(rand(97, 122));
if (move_uploaded_file($_FILES['uploadfile']['tmp_name'], './uploades/'.$rand))
die("success");
else
die("error");

我会收到错误,看起来 move_uploaded_files 无法创建文件夹。我该怎么做?

基本上我正在寻找一种方法来做到这一点,例如 file_put_contents(),如果不存在则创建路径。

【问题讨论】:

    标签: php file-upload upload


    【解决方案1】:

    使用mkdir()

    如果您需要创建多个文件夹,例如通过传递a/b/c,请将第三个参数设置为TRUE

    你可以测试它是否已经存在,如果不存在则添加......

    $path = 'abc';
    
    if ( ! is_dir($path)) {
        mkdir($path);
    }
    

    【讨论】:

    • @mkdir() 会抑制错误,或者最好的方法是file_exists
    • 所以首先我应该看看它是否存在,如果它不存在则创建它对吗?
    • @Ragez:我认为应该像file_put_contents() 那样做一些事情,如果它不存在,它会自动创建。
    • @Omeid Herat 有,在上面:P
    • @Omeid:我想这样,但到目前为止我还没有运行那个函数
    【解决方案2】:

    使用这样的东西:

    $folder = "uploads"; 
    if(!is_dir($folder)) mkdir($folder);
    

    is_dir() 检查文件夹是否存在。

    【讨论】:

      【解决方案3】:

      这对我有用:

      $path = "upload/";
      $name = $_FILES["file"]["name"];
      // Remove dangerous characters from filename.
      $name = str_replace('..', '', $name);
      $name = str_replace('/', '', $name);
      $name = str_replace('\\', '', $name);
      
      if (($_FILES["file"]["type"] == "image/jpeg")
      || ($_FILES["file"]["type"] == "image/jpg")
      && ($_FILES["file"]["size"] < 2000000)) {
            if ($_FILES["file"]["error"] > 0) {
              echo "Error " . $_FILES["file"]["error"] . "<br>";
            } else {
              if(file_exists($path.$name)){
                  echo "$path$name already exists. ";
              } else {                
                  @mkdir($path, 0666, true);  // Create non-executable upload folder(s) if needed.
                  move_uploaded_file($_FILES["file"]["tmp_name"], $path.$name);
                  echo "Stored in: $path$name";
              }
          }
      } else {
          echo "Invalid file. Allowed are JPG smaller than 2 MB.";
      }
      

      【讨论】:

        【解决方案4】:

        首先使用mkdir()创建目录

          $rand =  chr(rand(97, 122)). chr(rand(97, 122)). chr(rand(97, 122));
            mkdir('./uploades/'.$rand);
            if (move_uploaded_file($_FILES['uploadfile']['tmp_name'], './uploades/'.$rand))
            die("success");
            else
            die("error");
        

        【讨论】:

          【解决方案5】:
          if($_FILES['file_up']['type']=='image/jpeg' || $_FILES['file_up']['type']=='image/png' || $_FILES['file_up']['type']=='image/gif')
          {
              move_uploaded_file($_FILES['file_up']['tmp_name'],'uploads/'.time().$_FILES['file_up']['name']);
          }
          else
          {
              echo "Upload only image file..";
          }
          

          【讨论】:

          • 请编辑您的答案并格式化代码以使其可读
          猜你喜欢
          • 1970-01-01
          • 2022-10-15
          • 2020-01-05
          • 2011-11-30
          • 2022-10-04
          • 2016-04-30
          • 1970-01-01
          • 1970-01-01
          • 2014-05-19
          相关资源
          最近更新 更多