web-dev-qa-db-ja.com

JInputを使用したファイルのアップロード!可能?

記事の1つでHTMLフォームを使用しています。JInputを使用してフォームから値を取得することに成功しました。

$input = JFactory::getApplication()->input;

しかし、今私はfile upload inputをフォームに追加する必要があります:

<input type="file" name="upload">

JInputを使用してサーバーにファイルをアップロードおよび保存する方法!?

制限付きのファイルアップロード、特定のファイル拡張子のみを許可します。

6
saibbyweb

@Bakualの回答に加えて、次のような単純なフォームがあるとします。

<form name="upload" method="post" enctype="multipart/form-data">
    <input type="file" name="file_upload">
</form>

送信ボタンが押されたらファイルをアップロードするには、これを使用できます:

$input = JFactory::getApplication()->input;
$file  = $input->files->get('file_upload'); 

// Cleans the name of teh file by removing weird characters
$filename = JFile::makeSafe($file['name']); 

$src  = $file['tmp_name'];
$dest = JPATH_BASE . '/modules/mod_mymodule/' . $filename;

if (JFile::upload($src, $dest)) 
{
      // The file has successfully been uploaded :)
} 
else 
{
      // Oh crap, something happened. Run!
}

パスを変更する必要があります($dest)ニーズに合ったものに。

アップロードを処理するときに実行する必要のある検証がたくさんあります。その多くは、既に提供されているリンクにあります。

http://docs.joomla.org/How_to_use_the_filesystem_package

16
Lodder

JInputを使用したファイルのアップロードに関しては、通常、2つの注意が必要な点があります。

  • フォームタグには_enctype="multipart/form-data"_を含める必要があります
  • ファイル配列は$input->files->get('upload');で取得されます
7
Bakual