-1

我有一个 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。

谢谢!

4

1 回答 1

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_sizeupload_max_filesize设置以查看您的文件是否大于允许的最大大小

于 2013-03-09T14:32:22.447 回答