PHP上传的文件没有去我想要的地方

时间:2019-06-06 16:52:56

标签: php apache

我有一个php脚本,该脚本是在Internet的大量帮助下编写的,我不完全了解发生了什么。 这是一个上传工具,应该将上传到我的网站的文件发送到服务器上名为“上传”的文件夹中。 当我使用xampp时,它可以很好地工作,但是当我在我的大学提供给我的远程服务器上运行它时,脚本会将文件保存在其根文件夹中,而不是将其发送到我在此处创建的“上载”文件夹中。

我尝试以不同的方式指定目录,但是由于它可以在我的计算机上运行,​​而不能在大学服务器上运行,所以我不知道该怎么做。 高校服务器可与apache2配合使用,在我的计算机上,我使用最新版本的xampp进行本地测试。

index.html和upload.php位于同一文件夹中,两台计算机上都有一个名为“ uploads”的子文件夹。

<?php
if(isset($_POST['submit'])){
    $file = $_FILES['file'];

    $fileName = $_FILES['file']['name'];
    $fileTmpName = $_FILES['file']['tmp_name'];
    $fileSize = $_FILES['file']['size'];
    $fileError = $_FILES['file']['error'];
    $fileType = $_FILES['file']['type'];

    $fileExt=explode('.', $fileName);
    $fileActualExt = strtolower(end($fileExt));

    $allowed = array('cvs');

    if(in_array($fileActualExt, $allowed)) {
        if($fileError === 0){
            if($fileSize < 100000){
                $fileNameNew = uniqid('', true).".".$fileActualExt;
                $fileDestination = 'uploads/'.$fileNameNew;
                move_uploaded_file($fileTmpName, $fileDestination);
                header("Location: index.php?uploadsuccess");
            } else {
                echo "Your file is too big!";
            } 
        } else {
            echo "There was an error uploading your file!";
        }
    } else {
        echo "You cannot upload files of this type!";
    }
}
?>

我希望文件可以上传,但它们与脚本位于同一文件夹中。

1 个答案:

答案 0 :(得分:1)

尝试在文件路径之前添加__DIR __:

$fileDestination = __DIR__.'/uploads/'.$fileNameNew;

如果“ uploads”文件夹和upload.php文件位于同一位置,则此方法应该起作用。否则,您将必须修改分配的中间部分('/ uploads /')才能导航到正确的目录。

此外,遇到类似问题,请参见this similar post