我的文件上传表单不上传非图像文件.为什么


My File Upload Form Does Not Upload Non-Image Files. Why?

我有一个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_sizeupload_max_filesize设置在php中,看看你的文件是否大于最大允许的大小