_JLoader::register('JFile', JPATH_LIBRARIES . '/joomla/filesystem/file.php');
$fields = array('one', 'two', 'three');
foreach ($fields as $field)
{
$file = $input->files->get($field);
$src = $file['tmp_name'];
$filename = JFile::makeSafe($file['name']);
$dest = JPATH_BASE . "/screen/" . $filename;
if ( strtolower(JFile::getExt($filename) ) == 'jpg') {
if (JFile::upload($src, $dest))
{
echo "upload successful";
}
}
else {
header("Location: /error.php");
}
_
私が直面している問題は、上記のコードを使用する場合です。
1)jpg以外のファイルをアップロードしようとすると、ELSEステートメントが実行されます:)
_else {
header("Location: /error.php");
}
_
しかし、これを使用すると、上記の代わりにIF-STATEMENTが使用されます。 :
_if (JFile::upload($src, $dest))
{
header("Location: /done.php");
}
_
そしてnon-jpgファイルをアップロードしようとすると、IF-STATEMENTにジャンプします:
_if (JFile::upload($src, $dest))
{
header("Location: /done.php");
}
_
なぜこうなった?
_echo "upload successful";
_をheader("Location: /done.php");
に変更した直後にイベントが変更されるのはなぜですか?
これを試して:
$app = JFactory::getApplication();
if ( strtolower(JFile::getExt($filename) ) == 'jpg') {
if (JFile::upload($src, $dest))
{
$app->setHeader('Location', JUri::root() . 'modules/mod_mymodule/done.php');
// Success
}
else
{
$app->setHeader('Location', JUri::root() . 'modules/mod_mymodule/error.php');
// File could not be uploaded
}
}
else
{
$app->setHeader('Location', JUri::root() . 'modules/mod_mymodule/error.php');
// Incorrect file type. Please select a jpg
}