2017-10-13 8 views
0

を使用してファイルに変換し直しています。私は、javfを使用してpdfファイルと画像ファイルを64に変換し、WEB APIのC#を使用してファイルに変換しようとしています。JavaScriptを使用してBase 64からファイルを変換し、C#

Javascriptを

var filesSelected = document.getElementById("inputFileToLoad").files; 
if (filesSelected.length > 0) 
{ 
    var fileToLoad = filesSelected[0]; 
    var fileReader = new FileReader(); 
    fileReader.onload = function(fileLoadedEvent) 
    { 
     var textAreaFileContents = document.getElementById("textAreaFileContents"); 
     textAreaFileContents.innerHTML = fileLoadedEvent.target.result; 
    }; 
    fileReader.readAsDataURL(fileToLoad); 
} 

C#

Byte[] bytes = Convert.FromBase64String(dd[0].Image_base64Url); 
File.WriteAllBytes(actualSavePath,bytes); 

しかし、APIで、私は{"The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters. "}

として例外を取得しています...どのようにこれを続行する おかげ

+0

あなたはあなたがapiを投稿していますか? 'fileReader.result'にする必要があります – Niladri

+0

はい私はfileReader.resultを投稿しています... – Hem

+0

あなたはコントローラのAPIアクションを投稿できますか? 'dd [0] .Image_base64Url'として掲示されている値は何ですか? – Niladri

答えて

0
を教えてください

MDN: FileReader.readAsDataURL生成されたURLの先頭には、data:image/jpeg;base64,のような接頭辞が付きます。生成された文字列を見てください。 base64,の出現を探し、この接頭辞の後に始まるbase64データを取る。

+0

データを削除しています:image/jpeg; base64、worked。誰かが同じ問題に直面している場合は、このスクリプトを使用してURLから接頭辞を削除してください。 var base64result = reader.result.split( '、')[1]; – Hem

+0

大きなファイルをアップロードしようとすると、5MBでスクリプトが実行されますが、ファイルはバイトに変換されずに実行されます。APIでnullエラーが発生しました。 – Hem

+0

@Hem私はMDNライブ結果を使って11mbイメージをbase64文字列に変換し、firefoxから生成されたURLを抽出し、データをファイルにダンプし、C#でこのファイルを読み込んでbase64データをデコードし、画像。それは動作します。だから、それはブラウザ依存の設定やアドオンなどのようなものかもしれません。そして、「変換せずに走る」とはどういう意味ですか? 'load'イベントは起動していますか? 'FileReader'には' progress'イベントと 'error'イベントもあります... – Michael

関連する問題