Загрузка файла PDF с угловым и php api - PullRequest
0 голосов
/ 12 февраля 2019

Я хочу загрузить файл PDF с угловым и php api.Я пытался заставить предложенное здесь решение ( File Upload In Angular? ) работать с php api.

Я тестировал код, но он не работает.

это код в html-файле

<input type="file" (change)="fileChange($event)" placeholder="Upload file" accept=".pdf,.doc,.docx">

Вот код ts, я немного его изменил по сравнению с кодом в URL, который я положил выше, чтобы он работалс HttpClient

  fileChange(event) {
    let fileList: FileList = event.target.files;
    if(fileList.length > 0) {
        let file: File = fileList[0];
        let formData:FormData = new FormData();
        formData.append('uploadFile', file, file.name);
        let headers = new HttpHeaders();
        /** In Angular 5, including the header Content-Type can invalidate your request */
         headers.append('Content-Type', 'multipart/form-data');
        headers.append('Accept', 'application/json');
      //  let options = new RequestOptions({ headers: headers });
        const options = {
          params: new HttpParams(),
          headers:  headers
        };
        this.Http.post(`http://localhost/Back/ajouterPublication.php`, formData, options)

            .subscribe(
                data => console.log('success'),
                error => console.log(error)
            )
    }
}

и вот php api

<?php

header("Access-Control-Allow-Origin: *");

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
  echo json_encode(array('status' => false));
  exit;
}

$path = 'http://localhost//fichier';

if (isset($_FILES['file'])) { 
  $generatedName ='abc.pdf';
  $filePath = $path.$generatedName;

  if (!is_writable($path)) {
    echo json_encode(array(
      'status' => false,
      'msg'    => 'Destination directory not writable.'
    ));
    exit;
  }

  if (move_uploaded_file($_FILES['file']['tmp_name'], $filePath)) {
    echo json_encode(array(
      'status'        => true,
      'originalName'  => $originalName,
      'generatedName' => $generatedName
    ));
  }
}
else {
  echo json_encode(
    array('status' => false, 'msg' => 'No file uploaded.')
  );
  exit;
}

?>

Я использую угловой 7.2.1

1 Ответ

0 голосов
/ 12 февраля 2019

Ваш параметр запроса API - uploadFile, и вы используете файл.

Замените его в вашем PHP-файле.

<?php

header("Access-Control-Allow-Origin: *");

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
  echo json_encode(array('status' => false));
  exit;
}

$path=$_SERVER['DOCUMENT_ROOT'] . "/your folder name/";

if (isset($_FILES['uploadFile'])) { 
  $generatedName ='abc.pdf';
  $filePath = $path.$generatedName;

  if (!is_writable($path)) {
    echo json_encode(array(
      'status' => false,
      'msg'    => 'Destination directory not writable.'
    ));
    exit;
  }

  if (move_uploaded_file($_FILES['uploadFile']['tmp_name'], $filePath)) {
    echo json_encode(array(
      'status'        => true,
      'originalName'  => $originalName,
      'generatedName' => $generatedName
    ));
  }
}
else {
  echo json_encode(
    array('status' => false, 'msg' => 'No file uploaded.')
  );
  exit;
}

?>
...