私の英語については残念です。Javascript、入力ファイルから読み込んでXMLHttpRequestでアップロードする
"data:application/msdownload;base64,0J/RgNC40LLQtdGCINC80LjRgCE= .... etc."
:今、私のような変数 "myfileの" を持っている
var myfile='';
var input = document.getElementById('myfile');
input.onchange = function(evt){
var tgt = evt.target || window.event.srcElement, files = tgt.files;
if (FileReader && files && files.length) {
var fr = new FileReader();
fr.onload = function(){
myfile = fr.result;
}
fr.readAsDataURL(files[0]);
}
}
:このような
<input type="file" id="myfile">
読む(Javascriptの):私は、ファイル(.exe)入力ファイルが選択した自分のファイルをアップロード必要
base64の中に私が選んだソースファイルがあります。ファイルをアップロードしようとすると、このファイルのエンコーディングとサイズが変更され、ファイルが破損しています。何が間違っているの?
アップロードコード:
var fd = new FormData();
var b = new Blob([atob(decodeURIComponent((myfile).split(',')[1]))],{type: 'application/msdownload'});
fd.append('file', b, "myfile.exe");
var xhr = new XMLHttpRequest();
xhr.open("POST", "http://myserver/");
xhr.send(fd);
ファイルアップロードOK。しかし、このファイルをダウンロードすると、このファイルが破損しました...エンコードとサイズが変更されました。
私はアヤックスのない私のファイルをアップロードすることができますが、私は保持する必要があります...
xhr.setRequestHeader("Content-Type", "charset=windows-1251");
.............
xhr.setRequestHeader("Content-Type", "charset=utf-8");
など...... が、何も変わっていない:
私はこのように異なるヘッダーを設定しようとしていましたこのファイルはlocaly ...と操作後、変数からアップロードします。
要するに:
私はこのようにBase64でエンコードされた文字列があります。
0J/RgNC40LLQtdGCINC80LjRgCE=
まあ、私はこの文字列では知っているが、ファイルのソースである "SecretFile.exe"。 javascriptを使用してこのファイルをデコードしてアップロードします。 standart window.atobでデコードされた文字列はオリジナルのファイルソースと等しくありません。 FileReaderでBase64でエンコードされたこのファイルのデコード方法
ありがとうございます。
アップロードしたらOKですか?どのようにサーバーに保存しているのですか?どのようにダウンロードしていますか(そのコードは表示されていませんが、ファイルを破損する**ダウンロード**と書いてあります) –
'サイズが変更されました。元のサイズは何ですか、変更されたサイズは何ですか?悪魔は詳細にあります –
質問に対する回答を編集しないでください。 [回答の受け取りはどのように受け付けますか?](http://meta.stackoverflow.com/questions/5234/how-does-accepting-an-answer-work)をお読みください。 – Quentin