【问题标题】:Upload txt file and from first line take string for new file name上传 txt 文件并从第一行获取新文件名的字符串
【发布时间】:2018-10-10 18:32:43
【问题描述】:

在服务器上上传 .txt 文件时,我需要读取它,取第一行,第一行中的这个字符串用于新文件名(重命名文件)。

例如我有文件 test.txt 并且在文件中有

First line - Username: DemoUser

我需要将 test.txt 重命名为 DemoUser.txt 并将这个 DemoUser.txt 存储在 MySQL 中

【问题讨论】:

  • 到目前为止你尝试了什么?
  • @MCMXCII 不多。我不知道该怎么做。我有上传脚本,但需要取第一行进行重命名。
  • 分解,一步一步来。首先编写允许您上传 .txt 文件的部分,然后处理读取该文件,然后拆分行,然后使用一行的返回来创建一个新文件。在此过程中遇到任何问题,然后返回这里提供一些我们可以调试的代码。
  • 一旦你阅读了文件,你就可以通过explode( ': ', preg_split( '(\\r\\n|\\r|\\n)', $uploaded_file_contents )[0] )[1]获得DemoUser。祝你好运

标签: php upload rename


【解决方案1】:

这是我的脚本

<?php

if (isset($_POST['submit']))
{
    $filename = $_FILES["file"]["name"];
    $file_basename = substr($filename, 0, strripos($filename, '.')); // get file extention
    $file_ext = substr($filename, strripos($filename, '.')); // get file name
    $filesize = $_FILES["file"]["size"];
    $allowed_file_types = array('.doc','.docx','.rtf','.pdf', '.txt');

    $file = fopen($_FILES["file"]["tmp_name"],"r");
    $result = fgets($file);
    $result = explode( ': ', preg_split( '(\\r\\n|\\r|\\n)', $result )[0] )[1];
    fclose($file);

    if (in_array($file_ext,$allowed_file_types) && ($filesize < 200000))
    {   
        // Rename file
        $newfilename = $result . $file_ext;
        if (file_exists("users/" . $newfilename))
        {
            // file already exists error
            echo "You have already uploaded this file.";
        }
        else
        {       
            move_uploaded_file($_FILES["file"]["tmp_name"], "users/" . $newfilename);
            echo "File uploaded successfully.";     
        }
    }
    elseif (empty($file_basename))
    {   
        // file selection error
        echo "Please select a file to upload.";
    } 
    elseif ($filesize > 200000)
    {   
        // file size error
        echo "The file you are trying to upload is too large.";
    }
    else
    {
        // file type error
        echo "Only these file typs are allowed for upload: " . implode(', ',$allowed_file_types);
        unlink($_FILES["file"]["tmp_name"]);
    }
}
?>

【讨论】:

  • 文件名是否包含路径?例如,/this/is/the/directory/file.txt?
  • @IbrahimHafiji 不,$newfilename 只有文件名和扩展名。在此之前,我设置了什么是文件夹。这里的文件夹是 users/
猜你喜欢
  • 2014-09-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-02
  • 1970-01-01
  • 1970-01-01
  • 2021-10-28
  • 1970-01-01
  • 2017-01-10
相关资源
最近更新 更多