如何仅上传特定扩展名的文件?
如何仅上传特定扩展名的文件?
我只想上传以.mp3
为扩展名的文件。\n我尝试使用以下代码上传文件:\nindex.php
:\n
\nupload.php
:\n
$temp = explode(".", $_FILES["file"]["name"]); $extension = end($temp); if ($extension == "mp3"){ $target = "upload/"; move_uploaded_file($_FILES["file"]["tmp_name"], $target. $_FILES["file"]["name"]); } else { echo "上传失败"; }
\n我的代码有什么问题?
如何仅上传特定扩展名的文件?
这似乎是一个字符串大小写比较的问题。在小写或大写格式中进行比较应该可以解决。
$temp = end(explode(".", $_FILES["file"]["name"])); $extension = strtolower($temp); if ($extension == "mp3"){ $target = "upload/"; move_uploaded_file($_FILES["file"]["tmp_name"], $target. $_FILES["file"]["name"]); } else { echo "Failed"; }
为什么应该“尝试这样做”?一个好的答案总是会解释做了什么以及为什么那样做,不仅为了提问者,也为了未来访问Stack Overflow的人。
好吧,也许我认为字符比较可能是这里的问题。我已经解释了我想要建议的内容。我将尽量在以后更加具体。我是Stack Overflow的新手,请多包涵。
问题的原因是需要上传一个特定扩展名的文件,解决方法是使用PHP代码来判断文件的扩展名并进行上传。以下是相应的文章:
如何仅上传特定扩展名的文件?
有时候我们需要限制用户只能上传特定扩展名的文件,这可以通过使用PHP来实现。下面是一个示例代码:
$name = $_FILES["file"]["name"]; $extension = end((explode(".", $name))); //extra () to prevent notice if ($extension == "mp3"){ $target = "upload/"; move_uploaded_file($_FILES["file"]["tmp_name"], $target. $_FILES["file"]["name"]); } else { echo "Failed"; }
以上代码会判断上传的文件是否为mp3格式,如果是,则将文件移动到指定的目录中。如果文件格式不是mp3,则会输出"Failed"。
你也可以使用`pathinfo()`函数来获取文件的扩展名,示例如下:
$path_parts = pathinfo($_FILES["file"]["name"]); $extension = $path_parts['extension'];
为什么要使用上述代码?一个好的答案应该解释代码的作用和原因,不仅仅是为了帮助提问者,也有助于其他访问该问题的人。