I have the following code in my form.

function video_subtitles_menu() {
    //print "video_subtitles_menu 1";exit;
  $items = array();
  $items['video_subtitles_test/upload'] = array( //this creates a URL that will call this form at "examples/form-example"
    'title' => 'Upload Subtitle', //page title
    'description' => 'Uploading subtitle for videos',
    'page callback' => 'drupal_get_form', //this is the function that will be called when the page is accessed.  for a form, use drupal_get_form
    'page arguments' => array('video_upload_subtitles_form'), //put the name of the form here
    'access callback' => TRUE
      //print "video_subtitles_menu 2";exit;
  return $items;

function video_upload_subtitles_form($form, &$form_state) {
 $form = array('#attributes' => array('enctype' => 'multipart/form-data'));
 $form['video_name'] = array(
    '#title' => t('Name Of the video'),
    '#type' => 'textfield',

 $form['sub_file'] = array(
        '#type' => 'file',
        '#title' => t('Upload video'),
        '#size' => 48,
        '#description' => t('Pick a video file to upload.'),
 $form['submit_button'] = array(
    '#type' => 'submit',
    '#value' => t('Submit'),

 return $form;


function video_upload_subtitles_form_validate() {
  if(!file_check_upload('upload')) {
    // If you want to require it, you'll want to do it here... something like this:
    form_set_error('upload', 'File missing for upload.');

function video_upload_subtitles_form_submit($form, &$form_state) {
 $video_name = $form_state['values']['video_name'];//I am able to get this 
 $file = file_save_upload('sub_file', array());
print "<pre>";print_r($file);// no response here 
drupal_set_message(t('The form has been submitted.'));//this also not printing 

On the submission handler, it only returns the text field, I don`t get anything from file upload field, when I use file_save_upload.

This is the response which i get in firebug, I have tried uploading text and excel file. Firebug

What I am trying to do is create a block where you can upload a file than I need to get the url to upload it to CDN but how to get the link of file at form submission.

I am using Drupal 7 by the way.

  • Have you looked at this comment in the file_save_upload API discussion?
    – msound
    Mar 26 '14 at 7:16
  • file_save_upload returns An object containing the file information if the upload succeeded, FALSE in the event of an error, or NULL if no file was uploaded.. So if you your result is NULL, it means no file was uploaded, and you should probably look into your server config. If it was FALSE, it means there was an error which you can find in your server logs or Drupal's watchdog (or both). 99 times out of 100 failures are due to permissions problems
    – Clive
    Mar 26 '14 at 9:05
  • this is the error stored in drupal log Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'H:\xampp\tmp\phpBBFD.tmp' to 'temporary://images.txt' in drupal_move_uploaded_file() (line 1607 of H:\xampp\htdocs\gemkt\trunk\includes\file.inc).
    – Hitesh
    Mar 26 '14 at 9:46

found the solution here.I am not sure what is the core issue but below is the solution

This was the comment in the above link where I found solution.

More than likely eveyone who is having a problem here has been developing on their local computer, then are tryng to migrate their system to a remote server. When you do this, you are probably moving your setting for directory paths along as well.

For example the temp path for your images is probably different than the image temp path on your host system.

I recommend this test in Drupal 6.14. goto /admin/settings/file-system

and look at your temporary directory... if its glaring red, then try renaming it to something like: /tmp. if that does not work, try renaming to just tmp ( no forward slash)

Next step to test this will be to upload an image or file. I tested it by uploading a new logo. But remember, that if you do a FULL DB dump from phpmyadmin from your local computer to the new host, you will probably see this problem again.

For Drupal 7 guys I just went to admin/config/media/file-system , so basically find out where the file system is in your config area and I change the '/tmp' to 'tmp'.

After changing it was able to print the file object :)

stdClass Object ( [uid] => 1 [status] => 0 [filename] => 3-26-2014 12-15-54 PM.png [uri] => temporary://3-26-2014 12-15-54 PM.png [filemime] => image/png [filesize] => 30536 [source] => private_file [destination] => temporary://3-26-2014 12-15-54 PM.png [timestamp] => 1395828492 [type] => image [field_replacement] => stdClass Object ( [uid] => 1 [status] => 0 [filename] => 3-26-2014 12-15-54 PM.png [uri] => temporary://3-26-2014 12-15-54 PM.png [filemime] => image/png [filesize] => 30536 [source] => private_file [destination] => temporary://3-26-2014 12-15-54 PM.png [timestamp] => 1395828492 [type] => image ) [fid] => 3102 ) 

Hope it help someone.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.