我有一个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 Form Plugin上传文件而无需重新加载页面。
AJAX表格插件代码:
$("#uploadForm").ajaxForm({
success: function(responseText) {
if(responseText.length>0) {
$(".uploadStatus").text('Uploaded!');
}
}
}).submit();
问题是什么?如何解决?我需要允许我的用户上传其他类型的文件,最重要的是上传MP3和MP4。
谢谢!
答案 0 :(得分:2)
行
if(preg_match("/(jpg|jpeg|png|gif)/",$ext)) {
按扩展程序过滤文件。添加要包含在列表中的其他扩展名,例如
if(preg_match("/(jpg|jpeg|png|gif|mp3|mp4)/",$ext)) {
请注意,所有文件都将上传到同一个文件夹,因此即使您的mp3文件也会在照片文件夹中。如果您不想这样,则必须根据文件类型更改move_uploaded_file
的路径。
由于您已更新了问题,请检查php中的post_max_size
和upload_max_filesize
设置以查看您的文件是否大于允许的最大尺寸