根据扩展名在目录中添加文件


Add file in directory depending on the extension

在我的服务器中,我有不同的目录,例如:
/- js ,
/——html ,
/php——,
/css。
我想创建这样的方法addFile($file_name,$file_extension)然后在我的目录下创建一个名为$file_name$file_extension的文件,这个文件的扩展名为$file extension。我该怎么做呢?

可以使用file_put_contents。您可以添加数据并创建具有任何扩展名的文件。在$filename中,你可以输入文件夹和文件名的完整路径。

记住file_put_contents不会创建目录结构。

为了避免这种情况,你可以这样写:

if (!is_dir('upload/images/')) {
  // dir doesn't exist, make it
  mkdir('upload/images/');
}
$image = 'file.txt';
$some_data = 'Text inside your file';
file_put_contents('upload/images/' . $image, $some_data);

否则,您可以从本文学习如何创建文件http://www.w3schools.com/php/php_file_create.asp

所以你的方法会是这样的:
function addFile($file_name, $file_extension) {
  $dirs = ['js', 'css', 'html', 'php'];
  foreach($dirs as $dir) {
      if($dir == $file_extension) {
          file_put_contents($dir . '/' . $file_name . '.' . $file_extension, 'Some text data? ');
      }
  }
}

作为一个粗略的例子,下面可能会有用?

function addfile( $filename=false ){
    if( $filename && file_exists( $filename ) ){
        clearstatcache();
        $basedir = $_SERVER['DOCUMENT_ROOT'];
        $ext=pathinfo( $filename, PATHINFO_EXTENSION );
        $name=pathinfo( $filename, PATHINFO_BASENAME );
        switch( $ext ){
            case 'css': $dir='/css/'; break;
            case 'txt': $dir='/txt/'; break;
            case 'js': $dir='/js/';break;
            case 'html': $dir='/html/'; break;
            case 'php': $dir='/php/'; break;
            case 'jpg':
            case 'jpeg': $dir='/images/jpg/'; break;
            case 'png': $dir='/images/png/'; break;
            case 'gif': $dir='/images/gif/'; break;
            case 'mp3': $dir='/audio/mp3/'; break;
            case 'mp4': $dir='/video/mp4/'; break;
            default: $dir=false; break;
        }
        if( $dir ){
            $targetpath = $basedir . $dir;
            if( !file_exists( $targetpath ) ){
                /* create the directory - recursively if necessary */
                createdirs( $targetpath );
            }
            return file_put_contents( $targetpath . $name, '', FILE_TEXT );
        }
        return false;
    }
    return false;
}

function createdirs( $path=NULL, $perm=0644 ) {
    if( !file_exists( $path ) ) {
        createdirs( dirname( $path ) );
        mkdir( $path, $perm, TRUE );
        clearstatcache();
    }
}