Unable to set file upload destination private when programmatically creating new content type with file field

I am creating a module to upload video to an in house media converter – as part of the module installation I create a new content type called “user video” which has a file field as part of it.

I need to set this file field so it saves to the private files directory, however I am unable to do so. I can create the content type and add the file field – but never manage to get the upload destination to be private.

Sometimes I am able to change this via the admin interface, but sometimes this option is greyed out.

I have included the code below and would be grateful for any assistance.

//Create the file upload for the video to be converted
  $field_name = 'uploaded_video';

  //  Create the field definition array.
  $field = array(
   'field_name' => $field_name,
  'type' => 'file',
  );


  $field = field_create_field( $field );

 //  Create the field instance definition array.
  $instance = array(
      'field_name' => $field[ 'field_name' ],
      'entity_type' => 'node',
      'bundle' => 'user_video',
      'description' => 'A field for uploading video and audio content.',
      'label' => 'Video to upload',
      'settings' => array(
          'file_extensions' => 'mp4 avi wmv qti mov',
          'uri_scheme' => 'private',
          ),
      'widget' => array(
          'type' => 'file',
      ),
  );


//  Create an instance of the field and bind it to the bundle.
field_create_instance($instance)


Go to Source of this post
Author Of this post: nmcilree
Title Of post: Unable to set file upload destination private when programmatically creating new content type with file field
Author Link: {authorlink}