Тонкая структура загрузки нескольких файлов запускается только один раз - PullRequest
0 голосов
/ 05 июня 2019

Я пытаюсь загрузить несколько файлов и сохранить их путь к базе данных, используя slim framework. Проблема в том, что когда я тестирую код с помощью почтальона, он загружает только один файл и сохраняет только этот файл в базу данных. (Я использую multifileupload[] в качестве ключа и типа файла для загрузки двух или более файлов с одним вводом.)

Мой код ниже:

$app->post('/uploadfile',function(Request $request, Response $response, array $args) {
  $decodedsenttoke = $request->getAttribute('decoded_token_data');
  $directory = $this->get('upload_directory');
  $uploadedFiles = $request->getUploadedFiles();

  foreach ($uploadedFiles['multifileupload'] as $uploadedFile) {
    if ($uploadedFile->getError() === UPLOAD_ERR_OK) {
      $pathOfUploadedFiles = "http://someaddress.com/uploads/";
      $filename = moveUploadedFile($directory, $uploadedFile);
      $pathOfUploadedFiles .= $filename;
      $input = $request->getParsedBody();
      $insertsql = "INSERT INTO files (picturelink   ,  picturetitle ,  appointid)"
        ."VALUES (:picturelink  , :picturetitle , :appointid )";
      $this->db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, 'SET NAMES utf8');
      $sth = $this->db->prepare($insertsql);
      $sth->bindParam("picturelink", $pathOfUploadedFiles);
      $sth->bindParam("picturetitle", $input['picturetitle']);
      $sth->bindParam("appointid", $input['appointid']);
      $sth->execute();
      $insertArray = array('message'=>'inserted');

      return $this->response->withJson($insertArray);
    }
  }
});

1 Ответ

1 голос
/ 05 июня 2019

У вас есть

return $this->response->withJson($insertArray);

в конце внутренней части if внутри цикла - это автоматически закроет код и вернет содержимое после загрузки первого файла.

Переместить это до конца, когда все файлы были загружены.

...