Drupal 8: файл не может быть создан - PullRequest
1 голос
/ 29 октября 2019

Ниже приведен код для загрузки файла Excel, предоставляемого API, в формате base64_encode.

Я хотел бы загрузить этот файл и сохранить его в файловой системе.

public function import(Request $request) {

    if ($request->getMethod() === 'POST') {
      $data = json_decode($request->getContent(), TRUE);

      $directory = 'public://import/';

      // create directory if it does not exist
      file_prepare_directory($directory, FILE_CREATE_DIRECTORY | FILE_MODIFY_PERMISSIONS);

      $uri = $directory. $data['name'];
      $files_data = preg_replace('#^data:application/\w+;base64,#i', '', $data['data']);
      $file_data = base64_decode($files_data);
      $file = file_save_data($file_data, $uri, FILE_EXISTS_RENAME);
      echo $file->id();
    }
} 

Идет функция ниже и выдает ошибку, хотя я создал папку tmp в корневом каталоге проекта идано необходимое разрешение 777.

/ drupal / web / core / includes / file.inc

function file_unmanaged_save_data($data, $destination = NULL, $replace = FILE_EXISTS_RENAME) {
  // Write the data to a temporary file.
  $temp_name = drupal_tempnam('temporary://', 'file');
  if (file_put_contents($temp_name, $data) === FALSE) {
    \Drupal::messenger()->addError(t('The file could not be created.'));
    return FALSE;
  }

  // Move the file to its final destination.
  return file_unmanaged_move($temp_name, $destination, $replace);
}

Чего мне не хватает? Это не преобразование и сохранение файла.

Ответы [ 2 ]

1 голос
/ 01 ноября 2019

Обычно это происходит из-за неправильного временного местоположения и разрешения, я советую вам перейти на /admin/config/media/file-system и убедиться, что вы правильно установили Temporary Directory. если это хорошо. проверьте разрешение этого. вам нужно установить для записи через веб-сервис.

0 голосов
/ 30 октября 2019

Исправлено

На URL: domain.com / admin / config / media / file-system

Временный каталог -> Проблема с расположением и разрешением папки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...