У меня проблема с чтением изображения из 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, я читал, что это означает, что это не само изображение, а скорее «Сохранить как» "использовать.
Я перепробовал все, что видел, и ничего не получалось.