Programmatically create media file
uid shouldn't be 0, just change 'uid' =&gt; '0' by 'uid'=&gt; \Drupal::currentUser()-&gt;id():

$file_data = file_get_contents('http://www.africau.edu/images/default/sample.pdf');
$file = file_save_data($file_data, 'public://3010.pdf', FILE_EXISTS_REPLACE);
$media = Media::create([
  'bundle'           =&gt; 'file',
  'uid'              =&gt; \Drupal::currentUser()-&gt;id(),
  'field_media_file' =&gt; [
    'target_id' =&gt; $file-&gt;id(),
  ],
]);
$media-&gt;setName('Hello')-&gt;setPublished(TRUE)-&gt;save();