How to upload file in Drupal 7 with forms?

14,847

Doh. $destination shouldn't contain filename, just path.

Share:
14,847
lifecoder
Author by

lifecoder

Updated on June 04, 2022

Comments

  • lifecoder
    lifecoder almost 2 years

    I have troubles with Drupal 7 and file uploading.

    My code that doesn't work:

    function test_form($form, &$form_state){
    
    $form['#attributes'] = array('enctype' => "multipart/form-data");
    $form['podcast'] = array(
        '#title' => 'Audio file',
        '#type' => 'file',
    );
    $form['submit'] = array(
        '#type' => 'submit',
        '#value' => t('Save'),
    );
    return $form;
    
    }
    
    function test_form_submit($form, &$form_state){
    
    $vals = $form_state['values'];
    $filepath = 'public://test/';
    //$filepath = 'temporary://test/';
    $filename = 'rcc_date.mp3';
    
    file_prepare_directory($filepath, FILE_CREATE_DIRECTORY);
    $file = file_save_upload('podcast', array('file_validate_extensions' => array()), $filepath.$filename);
    //got FALSE here. Why?
    die(print_r($file===FALSE).'-');
    
    }
    

    So path created but file doesn't uploads and file_save_upload returns FALSE. Also I tried array() and true as $validators with no effect.

    Any help greatly appreciated. Thanks.

  • Magmatic
    Magmatic over 8 years
    For those of you wondering where $destination is, it's the third argument to file_save_upload. That line should look like this: $file = file_save_upload('podcast', array('file_validate_extensions' => array()), $filepath); Or preferably, like this: $file = file_save_upload('podcast', null, $filepath); This is a lot more secure. It doesn't allow PHP files, for example, to be uploaded, which would be a huge security risk. See api.drupal.org/api/drupal/includes!file.inc/function/…