Php文件上传大写扩展名不';不起作用


Php file upload uppercase extension doesn't work

我在上传来自HTML表单的文件时遇到问题。只有当扩展名不是大写时,它才能工作。上传.jpg可以,但.jpg不行(即使在系统上重命名文件后)。我完全困惑,我没有设置文件扩展名的限制,因为我的网站是非常私人使用。这是html表单

<form enctype="multipart/form-data" action="uploader.php" method="post">
Browse file : <input type="file" name="img"><br>
Nom : <input type="text" name="nom"><br>
Prix : <input type="text" name="prix"><br>
Description: <input type="text" name="descr"><br>
<input type="submit" value="Upload">
</form>

这是我要上传的脚本。

$target_path = "../photos/" . $_FILES['img']['name'];
if(move_uploaded_file($_FILES['img']['tmp_name'], $target_path)){
    code here
}

如有必要,我将提供更多信息,感谢您的帮助!

我认为这个问题与特定php.ini文件中的文件上传大小配置有关,而不是与文件扩展名有关。文件上载模块应不区分大小写。例如,WAMP的默认上传大小设置为最大文件大小2M。我也遇到了没有加载大写文件扩展名的问题,当我将具有大写扩展名的文件的文件大小与具有小写扩展名的相比时,大写超过2M,小写低于2M——我不知道这是否是一个windows的东西,其中大小写表示文件大小。在任何情况下,在单个文件上载的情况下,都会使用单个键值对填充$_FILES assoc数组。键是您在表单输入中设置的名称值,值是一个关联数组,该数组涉及文件上载的各个方面,包括键:名称、类型、大小、tmp_name和错误。上传文件模块可以填充文件名,但当它遇到大于配置设置的大小时,不会填充assoc数组的其余部分。因此,文件不会移动到配置的tmp目录中,类型没有设置,大小也没有设置,但是错误设置为1。因为文件从未上传到tmp目录,所以无法提取并移动它。解决方案是,转到php.ini文件,搜索文本"文件上传",检查上传的最大文件大小,并将其与测试文件进行比较,相应地编辑php.ini。

遇到了同样的问题-只是降低了目标路径的情况

$target_path =  $target_dir . strtolower(basename($_FILES["fileToUpload"]["name"]));