#javascript
Вопрос:
У меня есть кнопка, с помощью которой вы можете загрузить изображение и вставить его в тег, она работает в любом браузере, но не в chrome. Первый reader.onloadend
обработан, я могу войти image
и image.src
.
var inputUpload = document.getElementById('buttonUpload');
inputUpload.addEventListener('change', (e) => {
const file = e.target.files[0];
const reader = new FileReader();
reader.onloadend = () => {
//Initiate the JavaScript Image object.
var image = new Image();
image.src = reader.resu<
console.log('image.src');
image.onloadend = function() { /* execution stops here */
var height = this.height;
var width = this.width;
if (height > 150 || width > 150) {
showAlert('Image dimensions must be within 150amp;times;150 pixels.');
} else {
// convert file to base64 String
const base64String = reader.result.replace('data:', '').replace(/^. ,/, '');
// display image
valueImg = "data:image/png;base64," base64String;
updateImg(valueImg);
};
};
};
reader.readAsDataURL(file);
});
<button id="buttonUpload" type="button" class="d-inline btn-custom mx-0">
Upload
</button>
Когда я выбираю файл изображения, он останавливается на image.loadend, но я не получаю ошибок в консоли
Комментарии:
1. Пожалуйста, не считывайте большие двоичные файлы в
data:
строки URI — это огромная трата памяти. У нас естьblob:
URI, которые намного быстрее и эффективнее, и их можно использовать практически для всего, включая видео.2. @Dai Мне нужно сохранить изображение в mongodb, а с blob это невозможно, есть ли у меня другие варианты, кроме base64?
3. JavaScript вашей страницы не имеет ничего общего с MongoDB, но это не имеет значения: в первую очередь вы не должны хранить подобные файлы в MongoDB. MongoDB не предназначен для хранения больших двоичных объектов — вместо этого вы должны хранить файлы в соответствующей системе хранения больших двоичных файлов (например, на каком-либо автономном сервере, совместимом с S3).