我有一个HTML文件上传表单,使用PHP在我的服务器上上传文件。它上传图像文件,但其他类型的文件,如mp3或mp4不上传。我不知道出了什么问题。
代码如下:
HTML:
<form id="uploadForm" method="post" action="upload.php?ref=home" enctype="multipart/form-data">
<input id="shout_media" class="hidden" name="media" type="file" />
</form>
PHP:
<?php
if(isset($_GET['ref'])) {
if((isset($_FILES['media']))&&(is_uploaded_file($_FILES['media']['tmp_name']))) {
$name = $_FILES['media']['name'];
$tmpname = $_FILES['media']['tmp_name'];
$size = $_FILES['media']['size'];
$i = strrpos($name,".");
if (!$i) { return ""; }
$l = strlen($name) - $i;
$xt = substr($name,$i+1,$l);
$ext = strtolower($xt);
if(preg_match("/(jpg|jpeg|png|gif|mp3|mp4)/",$ext)) {
if(move_uploaded_file($tmpname,'photos/'.$name.'')) {
echo 'Uploaded successfully!';
}
}
}
我使用jQuery和http://www.malsup.com/jquery/form/Ajax表单插件上传文件而无需重新加载页面。
AJAX表单插件代码:
$("#uploadForm").ajaxForm({
success: function(responseText) {
if(responseText.length>0) {
$(".uploadStatus").text('Uploaded!');
}
}
}).submit();
问题是什么,我该如何解决它?我需要允许我的用户上传其他类型的文件,最重要的是mp3和mp4。
谢谢!
Line
if(preg_match("/(jpg|jpeg|png|gif)/",$ext)) {
按扩展名过滤文件。添加您想要允许的其他扩展到列表中,如
if(preg_match("/(jpg|jpeg|png|gif|mp3|mp4)/",$ext)) {
请注意,所有文件将被上传到同一个文件夹,所以即使你的mp3文件也会在照片文件夹。如果您不希望这样,您必须根据文件类型更改move_uploaded_file
的路径。
既然你已经更新了你的问题,检查post_max_size
和upload_max_filesize
设置在php中,看看你的文件是否大于最大允许的大小