後で解析されるajaxを介してテキストコンテンツをアップロードしようとしています。これが私のJavascriptコードです。
$("#fuFile").change(function () {
var fileInput = document.getElementById("fuFile");
var file = fileInput.files[0];
var formdata = new FormData();
formdata.append('file', file);
var xhr = new XMLHttpRequest();
xhr.open("POST", 'testhandler.ashx', true);
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xhr.setRequestHeader("X-File-Name", file.name);
xhr.setRequestHeader("Content-Type", "application/octet-stream");
xhr.send(formdata);
});
fuFile
私のファイル入力はどこにありtesthandler.ashx
、アップロードされたファイルを取得するサーバーハンドラーです。(実際には、別のハンドラーを使用してファイルの内容を解析します。)
しかし、私がこれをやろうとすると:
HttpFileCollection fc = context.Request.Files;
ファイルは返されませんでした。しかし、何らかの理由でIEで動作します。
しかし、入力ストリームを取得しようとすると、次のようになります。
StreamReader stream = new StreamReader(context.Request.InputStream);
string text = stream.ReadToEnd();
変数はtext
(Httpヘッダー)+ファイルコンテンツになります。
------WebKitFormBoundaryx16Mw7tnG6JeflIB\r\nContent-Disposition: form-data;name=\"file\"; filename=\"teste export.CSV\"\r\nContent-Type: application/vnd.ms-excel(..file content..)
それは大丈夫ですが、私はこのプラグインを使用しました:http: //valums.com/ajax-upload/
そして、プラグインはファイルコンテンツのみを返しました。魔女では、InputStreamを介してコンテンツを取得できましたが、HTTPヘッダーを受信しませんでした。
それは完璧ですが、プラグインを使用せずにアップロードスクリプトを作成したいと思います。アップロードして解析するだけで、いくつかの結果が返されます。シンプルで速い
だから、私の質問は:Ajax XHRによってアップロードされたファイルコンテンツを取得し、どのブラウザでもファイルコンテンツのみを取得する方法は?