Создать двоичную строку в Javascript и конвертировать в C # - PullRequest
1 голос
/ 18 марта 2019

У меня есть область загрузки файлов в моем приложении JavaScript.Когда я загружаю файл, я использую JS FileReader, чтобы получить двоичную строку загруженного файла.Затем я передаю это в мой C # WebApi и пытаюсь записать это в файл, чтобы я мог сохранить его на сервере.

Код JS

let myFile = ev.target.files[0];
if(myFile.size > 0){
    let reader = new FileReader();
    var fileByteArray = [];
    reader.readAsArrayBuffer(myFile);
    reader.onloadend = (e) => {                     
        var buffer = <ArrayBuffer>reader.result;
        var uintArray = new Uint8Array(buffer);
        var binaryString = String.fromCharCode.apply(null, uintArray);

        let resourceModel = new Model({
            contentType: myFile.type,                            
            fileName: myFile.name,
            fileContent: binaryString
         });                   

    } 
}

Код C #:

if (!String.IsNullOrEmpty(model.fileContent))
{
    byte[] bytes = Encoding.UTF8.GetBytes(model.FileContent);
    File.WriteAllBytes(RESOURCES_SAVE_PATH, bytes);                
}

Все выглядит так, как будто все работает, при выполнении не возникает никаких ошибок.Однако, когда вы открываете файл, файл не открывается, так как он не распознает содержимое.

Есть идеи, как мне это сделать?

1 Ответ

1 голос
/ 18 марта 2019

Спасибо @JeremyBenks за идею использовать взамен строку Base64. Соответствующие изменения для моего примера следующие:

JS

var binaryString = String.fromCharCode.apply(null, uintArray);

Для этого

var b64String = btoa(String.fromCharCode.apply(null,uintArray));

C #

byte[] bytes = Encoding.UTF8.GetBytes(model.FileContent);

Для этого

byte[] bytes = Convert.FromBase64String(model.FileContent);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...