2013-03-27 23 views
5

Mam pole w mojej formie, które jest plikiem typu. Gdy użytkownik kliknie ikonę zapisywania, chcę oczywiście przesłać plik na serwer i zapisać nazwę pliku w bazie danych. Próbowałem przetestować to przez echo nazwy pliku, ale wydaje się, że nie działa. Jak dodać nazwę pliku do bazy danych? Czy odbywa się to w modelu? Dzięki!Formularz przesyłania plików dla niestandardowego komponentu Joomla

kontrolery/customcom.php

jimport('joomla.filesystem.file');  
class CustomComControllerCustomCom extends JControllerForm 
     { 
      function save() 
      { 
       $file = JRequest::getVar('img_url', null, 'files', 'array'); 

       $filename = JFile::makeSafe($file['name']); 

       echo $filename; 
       } 
     } 

models/forms/customcom.xml

<?xml version="1.0" encoding="utf-8"?> 
    <form enctype="multipart/form-data"> 
      <fieldset> 
        <field 
         name="img_url" 
         type="file" 
         label="Image upload" 
         description="" 
         size="40" 
         class="inputbox" 
         default="" 
       /> 
      </fieldset> 
    </form> 

Odpowiedz

7

Podobnie zdobione.

Prawidłowy sposób jest

$jinput = JFactory::getApplication()->input; 
$files = $jinput->files->get('jform'); 
$file = $files['img_url']; 

To powinno załatwić sprawę. Tablica $ plik następnie posiada następujące klucze:

  • błąd
  • nazwa
  • rozmiar
  • tmp_name
  • typ

Usunąłem mój oryginalny odpowiedź, jak to było zwodniczy.

3

Zainspiruj przez Media Manager:

Wystarczy zauważyć, że składnik ten jest dość stary (refaktoryzacji jest w preparatach)

// Import dependencies 
jimport('joomla.filesystem.file') 

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

// Get uploaded file info 
$file_info = $input->files->get('img_url', null); 

// This will hold error 
$error = null; 

// Check if there was upload at all, mime is correct, file size, XSS, whatever... 
if (!MycomponentHelper::canUpload($file_info, $error) 
{ 
    $this->setError('problem: ' . $error); 
    return false; 
} 

// Move uploaded file destination 
JFile::upload($file_info['tmp_name'], $destination);