1

我在上传来自 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
}

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

4

2 回答 2

0

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

于 2017-11-30T09:02:14.133 回答
0

有同样的问题 - 只是降低目标路径的大小写

$target_path =  $target_dir . strtolower(basename($_FILES["fileToUpload"]["name"]));
于 2019-12-20T14:16:56.503 回答