-1

PHP を使用してサーバーにファイルをアップロードする HTML ファイル アップロード フォームがあります。画像ファイルはアップロードされますが、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) をアップロードできるようにする必要があります。

ありがとうございました!

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 に答える