【问题标题】:Fileupload — Add random name and set max-size, how to do it?Fileupload — 添加随机名称并设置 max-size,怎么做?
【发布时间】:2014-02-18 00:12:24
【问题描述】:

嗨,

今天我有一个文件上传脚本。 问题是它不会重命名文件名,并且具有最大文件上传大小。

如何将其添加到我当前的脚本中?

$Filename=$_POST['Filename'];
$Name=$_POST['Name'];
$pic=($_FILES['Filename']['name']);


if (isset($_POST['save']) && !empty($_POST['Name']) && !empty($_POST['Category']) && !empty($_POST['Time'])){
        $sql = "INSERT INTO View SET MergeID='{$_GET['id']}', Name='{$_POST['Name']}', Category='{$_POST['Category']}', Media='$pic', Time='{$_POST['Time']}'";
        mysql_query($sql) or die(mysql_error());
GetFileUpload();

}




function GetFileUpload() {

    if (file_exists("Media/" . $_FILES["Filename"]["name"])) {
       echo $_FILES["Filename"]["name"] . " file already exist ";
    } else {
       move_uploaded_file($_FILES["Filename"]["tmp_name"], "Media/" . $_FILES["Filename"]["name"]);
        // echo "File: ". basename( $_FILES['Filename']['name']). " has been created.";
    }

}

【问题讨论】:

    标签: php file post file-upload rename


    【解决方案1】:
    if ($_FILES["Filename"]["size"] < 2000000)
      {
      if ($_FILES["Filename"]["error"] > 0)
        {
       echo "Return Code: " . $_FILES["Filename"]["error"] . "<br>";
        }
      else
        {
    $rand =rand(1000,9999);
    $fname=$rand."-".$_FILES["Filename"]["name"];
       move_uploaded_file($_FILES["Filename"]["tmp_name"], "Media/" .$rand );
    }
    

    【讨论】:

    • 感谢您的评论。但是,如何添加文件扩展名等 randomnamn.jpg 或 .avi 等?
    • $items= array("jpg","jpeg","gif","png" ,"pdf");回声 $items[array_rand($items)];
    • $filename = strtolower($filename) ; $exts = explode(".", $filename) ; $n = 计数($exts)-1; $exts = $exts[$n]; $rext= $exts; //获取不带扩展名的文件名 $items= array("jpg","jpeg","gif","png" ,"pdf"); echo $rext.".".$items[array_rand($items)];
    【解决方案2】:

    对于 Ramdon 名称,您可以使用时间戳以及使其唯一的文件名 使用 php 的 DateTime() 函数。

    如果你没有使用任何框架,你可以从 php.ini 文件中设置文件上传限制

    或者使用这个

    // 你也应该在这里检查文件大小。 if ($_FILES['upfile']['size'] > 1000000) { throw new RuntimeException('超出文件大小限制。'); }

    参考http://www.php.net/manual/en/features.file-upload.php

    【讨论】:

      【解决方案3】:

      $_FILES['Filename']['size'] 将返回文件的大小(以字节为单位),根据您允许的最大大小对其进行检查。

      至于重命名文件,我使用了这个函数:

      function rename_file($file_to_rename)
      {
          $actual_name = pathinfo($file_to_rename,PATHINFO_FILENAME);
          $original_name = $actual_name;
          $extension = pathinfo($file_to_rename, PATHINFO_EXTENSION);
          $name = $actual_name.".".$extension;
          $i = 1;
          while(file_exists("Media/".$actual_name.".".$extension))
          {     
              $actual_name = (string)$original_name.'_'.$i;
              $name = $actual_name.".".$extension;
              $i++;
          }
      
          return $name; //For example, if file name is 1.jpg, this returns 1.jpg if that file doesn't exist else keeps incrementing like 1_1.jpg, 1_2.jpg etc.
      }
      
      function GetFileUpload($new_name) {
      
         move_uploaded_file($_FILES["Filename"]["tmp_name"], "Media/" . $new_name);
          // echo "File: ". basename( $_FILES['Filename']['name']). " has been created.";
      }
      
      $new_file_name = rename_file($_FILES['Filename']['name']);
      GetFileUpload($new_file_name);
      

      编辑:

      • 您的GetFileUpload 已更改为与rename_file 函数匹配。

      【讨论】:

      • user007,我在哪里添加这个代码?重新命名文件();在 GetFileUpload() 之前; ?或者其他的东西? :p
      猜你喜欢
      • 1970-01-01
      • 2021-12-12
      • 2018-04-27
      • 2020-04-07
      • 2017-12-16
      • 1970-01-01
      • 2020-07-20
      • 1970-01-01
      • 2011-12-22
      相关资源
      最近更新 更多