2011-09-08 15 views
0

こんにちはすべて私はあなたのハードドライブのためのフラッシュmultipickerを持つことによってjavascriptを使用して複数のファイルをサーバーにアップロードするuploadifyと呼ばれるjQueryアップローダーを使用しています。これにより、一度に1つずつではなく、一度にたくさんのファイルを簡単に取得できます。私は問題があります。複数の項目を選択していても、ajaxを使用して同じスクリプトを呼び出してファイルを個別にアップロードします。これは私がそのファイルをアップロードするためにuploadという名前のコントローラにPHP関数を書くことを可能にします。Codeigniter - 複数のアップロードとファイル情報

私は、ユーザーが登録プロセス中にすべてのファイルをアップロードできるようにしたいと考えています。問題は、私がcodeigniterを新しく使って、ファイルアップロードクラスを使いたいのですが、あなたがアップロードする前にどのタイプのファイルが見つかっていないか知っている限りです。後でそれがイメージかどうかを知ることができます。これを行う理由は、それらをすべて別々のフォルダに入れているからです。 1つは音楽用、もう1つは画像用です。

これを回避する別の方法は、アップロードの種類ごとに別々のアップロードフィールドを作成し、差分Ajaxスクリプトを呼び出すことだと思いました。これは実際に私がやりたいことですが、別の問題があります。私はcodeigniterがname = 'userfile'を使ってアップロードを行うことを知っています。私はページ上に異なる名前のアップローダーフィールドが3つ必要です。コードイグナイターでページあたり複数のアップロードフィールドを持たせることができますか?

誰かがこれで私を助けることができたら、私は非常に感謝します。

答えて

0

MIMEタイプを使用してファイルの種類を判断するのはなぜですか。 Uploadifyには、Flashベースのアップロードを使用しているため、ファイルの種類が指定されていないという問題があります。

ファイルをアップロードした後、MIMEタイプを確認し、それに基づいてディレクトリを変更することをお勧めします。

画像や動画の場合は、種類が少ないので簡単です。

function new_mime_content_type($filename) { 

    $mime_types = array(

      'txt' => 'text/plain', 
      'htm' => 'text/html', 
      'html' => 'text/html', 
      'php' => 'text/html', 
      'css' => 'text/css', 
      'js' => 'application/javascript', 
      'json' => 'application/json', 
      'xml' => 'application/xml', 
      'swf' => 'application/x-shockwave-flash', 
      'flv' => 'video/x-flv', 

      // images 
      'png' => 'image/png', 
      'jpe' => 'image/jpeg', 
      'jpeg' => 'image/jpeg', 
      'jpg' => 'image/jpeg', 
      'gif' => 'image/gif', 
      'bmp' => 'image/bmp', 
      'ico' => 'image/vnd.microsoft.icon', 
      'tiff' => 'image/tiff', 
      'tif' => 'image/tiff', 
      'svg' => 'image/svg+xml', 
      'svgz' => 'image/svg+xml', 

      // archives 
      'zip' => 'application/zip', 
      'rar' => 'application/x-rar-compressed', 
      'exe' => 'application/x-msdownload', 
      'msi' => 'application/x-msdownload', 
      'cab' => 'application/vnd.ms-cab-compressed', 

      // audio/video 
      'mp3' => 'audio/mpeg', 
      'qt' => 'video/quicktime', 
      'mov' => 'video/quicktime', 

      // adobe 
      'pdf' => 'application/pdf', 
      'psd' => 'image/vnd.adobe.photoshop', 
      'ai' => 'application/postscript', 
      'eps' => 'application/postscript', 
      'ps' => 'application/postscript', 

      // ms office 
      'doc' => 'application/msword', 
      'rtf' => 'application/rtf', 
      'xls' => 'application/vnd.ms-excel', 
      'ppt' => 'application/vnd.ms-powerpoint', 

      // open office 
      'odt' => 'application/vnd.oasis.opendocument.text', 
      'ods' => 'application/vnd.oasis.opendocument.spreadsheet', 
    ); 

    $ext = strtolower(array_pop(explode('.',$filename))); 
    if (array_key_exists($ext, $mime_types)) { 
     return $mime_types[$ext]; 
    } 
    else { 
     return 'general/general'; 
    } 
} 
関連する問題