Puncte:1

Reference private file?

drapel in

I'm making migration plugin which I'm using in first migration and it is creating private file like this:

if ($final_destination) {
  // Create a file entity.
  $file = File::create([
    'uri' => $final_destination,
    'uid' => $uid,
    'status' => FILE_STATUS_PERMANENT,
  ]);

  $uri = $file->getFileUri();

  $stream = new S3fsStream();
  $stream->writeUriToCache($uri);

  if ($stream->waitUntilFileExists($uri)) {
    $file->save();
    return $file->getFileUri();
  }
}

Then, second migration should create media entities, by using those files (with migration lookup plugin).

However, when I run second migration I get error message:

media: field_image.0=You do not have access to the referenced entity file: 46

If file is public then it works, but how can I reference private files? The error is triggered in ReferenceAccessConstraintValidator.php.

  // We check that the current user had access to view any newly added
  // referenced entity.
  if ($check_permission && !$referenced_entity->access('view')) {
    $type = $value->getFieldDefinition()->getSetting('target_type');
    $this->context->addViolation($constraint->message, ['%type' => $type, '%id' => $id]);
  }
drapel br
Asigurați-vă că utilizatorul dvs. are acces la acel fișier privat, altfel nu îl puteți consulta și nici nu îl puteți accesa.
drapel br
Pe de altă parte, când am făcut migrarea, nu a trebuit niciodată să creez un plugin pentru a crea media. Dar trebuie să setați câmpul media pentru a salva fișierele în directorul privat (evident). Dacă aveți o adresă URL (chiar și cu externă), trebuie doar să o setați la fișierul depus și pluginul furnizat îl va descărca pentru dvs. - dacă îmi amintesc bine așa cum a fost cu mult timp în urmă.
Puncte:0
drapel in

Am aflat că aceasta era problema cunoscută și este rezolvată în Drupal 9.3. Cu versiunile anterioare, patch-ul ar trebui aplicat:

https://www.drupal.org/project/drupal/issues/3134470

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.