Загрузка октетного потока в IMG из MongoDB с использованием GridFS - PullRequest
0 голосов
/ 01 апреля 2020

У меня проблема с чтением изображения из mongoDB, я могу получить его через почтальона: Результат от почтальона

Но я не могу получить его с помощью браузера:

Результат из браузера

Вот код router.get:

router.get("/getPhoto", async (req, res) => {
  console.log('/getPhoto')
  var gfs = gridfs(connection.db);
  res.contentType('image/png');
  // Check file exist on MongoDB
  gfs.exist({
    filename: (userLogged + ".png")
  }, function(err, file) {
    if (err || !file) {
      res.send('File Not Found');
    } else {
      var readstream = gfs.createReadStream({
        filename: (userLogged + ".png")
      });
      readstream.pipe(res);
    }
  });
});

А вот JavaScript, которые должны отображать его на HTML :

function getPhoto() {
  console.log('getting user photo');

  $.ajax({
    method: "GET",
    headers: {
      "Authorization": token,
      'Content-Type': "image/png"
    },
    url: RUTA_LOCAL + "/getPhoto"
    //responseType: 'blob',
    //processData: false,
    //contentType: false
  }).done(function(data) {
    if (data == "File Not Found") {
      // If user haven't image, load default image
      console.log("loading default photo");
      document.getElementById('profileImage').src = "img/defaultProfile.png";
    } else {
      console.log(data);

      let binaryData = [];
      binaryData.push(data);
      let blob = new Blob(binaryData);
      let reader = new FileReader();
      //reader.readAsDataURL(blob);
      reader.readAsArrayBuffer(blob);
      let result;
      reader.onload = function(event) {
        result = event.target.result;
        console.log(btoa(result));
        document.querySelector("#profileImage").src = result;
      };
    }
  }).fail(function(msg) {
    console.log("ERROR LLAMADA AJAX");
    M.toast({html: 'Error en la conexión'})
  });
}

Если я использую FileReader с readAsDataURL, он говорит, что типом mime является application / octet-stream, я читал, что это означает, что это не само изображение, а скорее «Сохранить как» "использовать.

Я перепробовал все, что видел, и ничего не получалось.

...