代码之家  ›  专栏  ›  技术社区  ›  S Andrew

如何使用php创建目录并在其中保存图像

  •  -1
  • S Andrew  · 技术社区  · 5 年前

    我有一个代码,我在其中选择一个图像,然后输入我要创建的目录名以保存该图像。在此之后,单击按钮后,应在给定路径中创建目录,并将文件保存在其中。

    <form enctype="multipart/form-data" action="upload.php" method="POST">
        <input type="hidden" name="MAX_FILE_SIZE" value="512000" />
        Send this file: <input name="userfile" type="file"/>
        <input type="text" name="idtest" value=<?php echo $idtest; ?> >
        <input type="submit" value="Send File" multiple/>
    </form>
    

    上传.php

    <?php
    
        $uploaddir = 'G:/dataset/' . $idtest;
        $uploadfile = $uploaddir . basename($_FILES['userfile']['name'])  ;
    
        echo $uploadfile;
    
    ?>
    

    在上面的代码中,我没有包括创建目录部分,这一部分我仍然需要处理。现在理想情况下变量 idtest 应随附 uploaddir 变量,所以每当我打印 uploadfile 最后一个目录应该是我在文本框中输入的目录。但它不起作用。有谁能解释一下它为什么不工作吗?谢谢

    0 回复  |  直到 5 年前
        1
  •  1
  •   Sam S    5 年前

    请尝试此上载脚本。根据您的评论,第一个问题似乎是表单中输入的目录名没有添加到完整的 uploadfile 路径。你需要抓住 idtest 来自 $_POST 变量优先。我还建议使用 move_uploaded_file 移动上载的文件。

    上传.php

    <?php
    
        $uploaddir = 'G:/dataset/' . $_POST['idtest'];
        // check if directory exists
        if(!is_dir($uploaddir)){
            mkdir($uploaddir);
        }
        $uploadfile = $uploaddir ."/". basename($_FILES['userfile']['name'])  ;
    
        echo $uploadfile;
        move_uploaded_file($_FILES['userfile']['tmp_name'],$uploadfile);
    
    ?>
    
    
    

    出于安全原因,请确保正确的表单验证和文件名检查,但这超出了本答案的范围。正如其他注释者所提到的,确保文件系统权限设置为允许写入 G:/dataset/ .