Я выполняю следующие действия.
- Я получаю переменную dataURL из Fabric.Canvas с помощью метода toDataURL.
dataURL = Canvas.toDataURL({
format: 'bmp ',
качество: 1.0
}); - Я извлекаю только ту строку, которая содержит «данные».
dataURLto64 = dataURL.substr(dataURL.lastIndexOf(',') + 1,
dataURL.length -
dataURL.lastIndexOf(',') - 1); - Вышеописанное делается на клиенте. На сервере мне нужно было сохранить строку по сегментам в текстовом файле TXT. Я проверил, что окончательное содержимое текстового файла идентично исходному dataURLto64 (в Base-64).
- Я извлекаю содержимое текстового файла.
Код: Выделить всё
string strtextfile64 = File.ReadAllText([path]);
- Я преобразую эту строку в массив байтов с помощью метода Convert.FromBase64String
Код: Выделить всё
fileBinary = Convert.FromBase64String(strtextfile64);
File.WriteAllBytes([path], fileBinary);
Чтобы проверить правильность строки Base-64, я включил следующую проверку на сервере.
Код: Выделить всё
int mod4 = strtextfile64.Length % 4;
if (mod4 > 0) {
strtextfile64 += new string('=', 4 - mod4);
}
Прикрепляю два текстовых файла, в которых исходный (клиент) и конечный ( сервер) Содержатся строки Base-64.
Исходный клиент
Конечный сервер
Может ли кто-нибудь сказать мне причину, по которой этот Base-64 данные, преобразованные в двоичные данные, не соответствуют требованиям с исходным форматом BMP из исходного файла BMP, созданного из ткани. Холст?
Подробнее здесь: https://stackoverflow.com/questions/792 ... -to-binary