当前位置: 首页 > 面试题库 >

如何在将上传的文件保存到目录之前重命名?

罗昊明
2023-03-14
问题内容

下面是我用来将文件上传到目录中的代码。工作正常。我的主要问题是:

move_uploaded_file() 是将上载的文件保存到目录中的文件,我也猜过 move_uploaded_file()
是为其设置名称的文件。

如何将文件名更改为随机数?

我尝试在下面这样做:

$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/pjpeg") || ($_FILES["file"]["type"] == "image/x-png") || ($_FILES["file"]["type"] == "image/png")) && ($_FILES["file"]["size"] < 100000) && in_array($extension, $allowedExts)) {
    if ($_FILES["file"]["error"] > 0) {
        echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
    } else {

        $fileName = $temp[0] . "." . $temp[1];
        $temp[0] = rand(0, 3000); //Set to random number
        $fileName;

        if (file_exists("../img/imageDirectory/" . $_FILES["file"]["name"])) {
            echo $_FILES["file"]["name"] . " already exists. ";
        } else {
            move_uploaded_file($_FILES["file"]["tmp_name"], "../img/imageDirectory/" . $_FILES["file"]["name"]);
            echo "Stored in: " . "../img/imageDirectory/" . $_FILES["file"]["name"];
        }
    }
} else {
    echo "Invalid file";
}

我试过更改 $ _FILES [“ file”] [“ name”]之类的 变量,并用 $ fileName 替换它
变量,以便可以存储新名称。


问题答案:

您只需在的第二个参数中更改文件名即可更改文件名move_uploaded_file

代替

move_uploaded_file($_FILES["file"]["tmp_name"], "../img/imageDirectory/" . $_FILES["file"]["name"]);

采用

$temp = explode(".", $_FILES["file"]["name"]);
$newfilename = round(microtime(true)) . '.' . end($temp);
move_uploaded_file($_FILES["file"]["tmp_name"], "../img/imageDirectory/" . $newfilename);

更改为反映您的问题,将根据当前时间产生一个随机数,并附加原始上传文件中的扩展名。



 类似资料:
  • 问题内容: 当我上传新文件时,即使我指定了别的,它也会保存到应用程序的根文件夹中。为什么配置不起作用? : 问题答案: 是Flask可以识别的配置选项。相对于当前工作目录(通常是开发过程中的项目根目录)工作。 将安全的文件名加入上载文件夹,然后保存到该路径。 最好将本地数据存储在实例文件夹中,而不是项目根目录中。Flask已经知道那在哪里。只要确保你instance首先创建目录即可。 无论你决定将

  • 我想上传文件并保存到特定的目录。而且我对文件的概念是陌生的。当我从我的页面上传文件时,它们保存在另一个目录(C:\ Users \ ROOTCP ~ 1 \ AppData \ Local \ Temp \ multipartbody 989135345617811478 astemporary file)而不是指定的目录。我不能设置它。请帮我找到解决办法。提前感谢所有的帮助。 上传的文件为什么保

  • 问题内容: 我想使用python复制s3存储桶中的文件。 例如:我的存储桶名称=测试。在存储桶中,我有2个文件夹名称为“ dump”和“ input”。现在,我想使用python将文件从本地目录复制到S3“转储”文件夹…有人可以帮助我吗? 问题答案: 尝试这个… [更新]我不是pythonist,所以感谢您对import语句的注意。另外,我不建议将凭证放在您自己的源代码中。如果您在AWS内部运行此

  • 问题内容: 我使用以下代码将文件保存在swift 3的文档目录中: 但是正如您所看到的,我不习惯获取文档目录路径,因为它仅给出URL而不是字符串。 问题: 如何从文件管理器获取字符串? 我的代码有崩溃的可能吗? 问题答案: 请反过来考虑。 建议使用此方法来处理文件路径,因为它包含用于添加和删除路径组件和扩展名的所有便捷方法,而不是Apple从中删除了这些方法。 不鼓励您连接诸如之类的路径。这很容易

  • 在我的程序中,我想让用户能够将一个文件保存到他们选择的目录中。在做了一点研究之后,我发现了这个名为JFileChooser的俏皮类。我想做的是允许用户通过JFileChooser GUI转到他们想要的目录,为他们的文件键入一个名称,并允许他们将他们的文件保存到想要的目录。我试着在网上寻找一个解决方案,如何做到这一点,但几乎在我读到的所有地方,最后的答案都是“现在你必须让你的程序保存文件”,但我不知

  • 问题 上传文件,并将其保存到预先设定的某个目录下。 方法 import web urls = ('/upload', 'Upload') class Upload: def GET(self): web.header("Content-Type","text/html; charset=utf-8") return """<html><head></he