Ошибка: Не удалось выполнить "atob" в "Окно": строка, подлежащая декодированию, неправильно закодирована
Это мой код Javascript
function upload(){
var byteCharacters = atob($scope.image1.compressed.dataURL.replace(/^data:image\(png|jpg);base64,/,''));
var byteNumbers = new Array(byteCharacters.length);
for (var i = 0; i < byteCharacters.length; i++) {
byteNumbers[i] = byteCharacters.charCodeAt(i);
}
var byteArray = new Uint8Array(byteNumbers);
var blob = new Blob([ byteArray ], {
type : undefined
});
Это мой HTML
<div class="form-group text-16px" style="margin-top: 20px !important;">
<label>Choose Material Photo : </label>
<div>
<input id="materialImage" type="file" accept="image/*" image="image1" resize-max-height="800" resize-max-width="800" resize-quality="0.7" resize-type="image/jpg" file-model="file" name="materialImage" onChange="checkFile()" ng-image-compress/>
<div id="choose-image-compresser">
<div image="image1" result-image="myCompressedImage"></div>
</div>
<img ng-src="{{image1.compressed.dataURL}}" />
<span id="image-size-error" style="color:red;" hidden=""><small>Image size is too large</small></span>
</div>
</div>
Я получаю сообщение об ошибке
Ошибка: не удалось выполнить "atob" в "Окно": строка, подлежащая расшифровке неправильно закодировано
Ответы
Ответ 1
У меня есть проблема. Это должно быть полезно для другого пользователя для сохранения изображения и сжатия изображения с использованием JavaScript (AnguarJs).
У меня течет эта ссылка для сжатия изображения Github
https://github.com/oukan/angular-image-compress
var imageData = $scope.image1.compressed.dataURL.toString();
var byteCharacters = atob(imageData.replace(/^data:image\/(png|jpeg|jpg);base64,/, ''));
var byteNumbers = new Array(byteCharacters.length);
for (var i = 0; i < byteCharacters.length; i++) {
byteNumbers[i] = byteCharacters.charCodeAt(i);
}
var byteArray = new Uint8Array(byteNumbers);
var blob = new Blob([ byteArray ], {
type : undefined
});
Ответ 2
После проверки кода кажется, что у вас есть символы, которые, вероятно, не поддерживаются.
Проверить скриншот
Если это не работает, убедитесь, что имя файла, который вы пытаетесь загрузить, закодировано в соответствии с вашей базой данных или настройками.
Вот код без этих символов:
var byteCharacters = atob($scope.image1.compressed.dataURL.replace(/^data:image\/(png|jpg);base64,/,'')); var byteNumbers = new Array(byteCharacters.length);
Ответ 3
Я узнал, что сначала вы должны декодировать URIComponent, если вы декодируете, вот мой ответ: введите описание ссылки здесь