как разместить содержимое файла в разных форматах в одном известном формате \ struct - PullRequest
0 голосов
/ 31 октября 2019

Использование angular8 + node.js - Попытка выяснить, как получить (опубликовать) содержимое файла - независимо от того, какой это формат ( UTF8 или base64 или двоичный , в моемcase) в функцию middlewear узла, чтобы впоследствии я мог закодировать ее (при необходимости) в формат base64. Мне удается это сделать, когда содержимое файла - base64, но возникают проблемы, когда оно является двоичным.

См. Мой код: Клиентская сторона: //modalRef.componentInstance - ссылка на модальное окно, подтверждающее загрузку файла.

  modalRef.componentInstance.passResult.subscribe(result => 
  {
    if (result)
    {
      let fileReader = new FileReader();
      fileReader.onload = () => 
      {

        this.uploadFileContent(fileReader.result.toString());
      }
      fileReader.readAsText(event.target.files[0]);
      //fileReader.readAsText(event.target.files[0], "ascii");

    }
    event.target.value = null;
    this.FileToUpload = null;
  });

Это метод uploadFileContent:

uploadFileContent(fileContent : /*string*/any)
{
    this.dataService.uploadFile(fileContent).subscribe();
}

Это метод обслуживания:

uploadFile(fileContent : /*string*/any) : Observable<any>
{
  let body =  
  { 
    file: fileContent
  };    
  return this.http.post<any>(<fileUploadUrl>, body, {
    withCredentials:true
  }).pipe(
    tap(res=>{
      console.log('file was uploaded!'); 
    }),
    catchError(error =>  this.doSomething(error))
  ); 
}

Сторона сервера:

router.use(schemaValidation(schema), (req, res, next) =>
{
   try
   {
       let file = req.body.file;
       //When receiving the file content in a single fortmat and struct - I would like to encode it 
         base64 format

1 Ответ

0 голосов
/ 03 ноября 2019

Решил это просто отправив файл в виде двоичной строки. вместо: fileReader.readAsText (event.target.files [0]);

Я использовал:

fileReader.readAsBinaryString (event.target.files [0]);

...