• 締切済み

ashxに送信したデータが受信時に違う値になる

とあるZipファイルのデータをashxに送信し、 ashxで受信したデータをファイルに出力する処理を実現したいのですが、 出力されたファイルを解凍しようとしても破損しており、解凍できませんでした。 原因を調べてみたところ、ajaxでashxに送信する時点では元のZipファイルと同じBinaryデータなのですが、ashxで受信したリクエストのボディ部が送信したデータと一致していませんでした。 (ashxで受信したTotalBytesの値が送信データよりも多くなってしまっていました。) ajaxで送信する際の指定に問題があるのでしょうか? 原因分かる方おりましたら、ご教授ください。 -----------------以下データを送信するaspxファイルのJS------------------------- var base64Str = document.getElementById("hData");  ←zipファイルのbinaryをbase64変換した値が格納されているhidden項目の値を取得しています。 var binaryStr = ConvertBase64.decode(base64Str); ←base64文字列を復号する処理です。この時点では元のZipファイルのBinaryデータと一致しています。 $.ajax({ type: "POST", url: "test.ashx", catche: false, headers: { "test": "aaaa" }, data: binaryStr })

みんなの回答

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

> (ashxで受信したTotalBytesの値が送信データよりも多くなってしまっていました。) もう少し詳しく。 頭にゴミが付くとか。 サイズが1.33倍になるとか。 > var binaryStr = ConvertBase64.decode(base64Str); base64文字列を送信してashx側でdecodeすればよいのでは?

関連するQ&A

  • HTTPハンドラでPOSTした値を受け取りたい。

    C♯でASP.NET環境にて開発をしています。 htmlにボタン(submit)を置いて、postが来たら、ashx(HTTPハンドラ) のほうでリクエスト値を見てDBから値を取り、結果を返したいと思っています。 結果については、JavaScriptのほうでinnerHTMLを使って反映させる予定です。 オンロードでJavaScriptのメソッドを呼んでるんですが (body onload = "test();") (input type hiddenでいくつかの値がpostされるように なっています) function test() { var ret = new Ajax.Request('GetValue.ashx'),{ method:'post' … } こんな感じでashxを呼んでるものの、htmlでpostした値が 受け取れません。 context.Request.Querystringで取ろうとしてるんですが… htmlでリクエストした際に、JavaScriptを呼んで、そこでajaxリクエストをしている という作りがまずいのでしょうか? HTTPハンドラを使うのが始めてなので、頓珍漢なことをしているかも しれませんが、ご教授いただけると助かります。 宜しくお願いします。

  • レジストリの値の取得のデータ型について…

    いつも大変お世話になっています。 今回は、APIのRegQueryValueExを使用してレジストリの値を取得しようとしているのですが、 レジストリのデータ型に対応するVBのデータ型がわからないものがあったので 質問させていただきます。 REG_EXPAND_SZ 展開可能フィールド(%USERNAME% %SystemRoot%など)を含んだ文字列 REG_MULTI_SZ 連続したゼロで終わる文字列(Str1\0Str2\0Str3\0... REG_BINARY バイナリデータ (最大1Mバイト) の3つなんですが、REG_BINARYはByte型でもエラーは出なかったのですが、値がレジストリのものと 違いました。(レジストリ:00 00 01 00 のデータに対して 取得データ:0 が取得されたのです) 他の2つは文字列型、数値型、バリアント型で試しましたが、すべて、メモリの参照エラーになってしまうのです。 どうかよろしくお願いします。

  • メールで画像を送信したら、勝手にZIPファイルで送信されていました。3

    メールで画像を送信したら、勝手にZIPファイルで送信されていました。300KB前後のjpgデータを10枚ぐらい送ったのですが、確認すると、5KB前後になっていました。「Lhasa」で解凍したのですが、データは5KB前後のままでした。windows7で、会社の独自ドメインのメールから、hotmailに送信して、開いたPCのOSはvistaです。解像度が3000×2700ぐらい必要なのですが、200×160ぐらいしかありません。 メールの添付データが5KB前後のZIPファイルの場合、解凍しても元のデータサイズで見る事は出来ないのでしょうか? 教えて下さい。

  • 0byteデータの送信と受信

    現在unixでsocketプログラムを書いています。 FTPライクなプログラムを書いているのですが、ファイルを送受信する場合、ファイルの終端をどうするかを考えています。 ファイルサイズを送るのはなしです。 sendで0byteのデータを送り、recvで0byteのデータを受信した場合にファイルの終端に達したとして処理を終らせたいと考えています。 実際、sendでは0byteのデータを送信してもエラーにはなりませんが、recvでは受信できません。 そのような処理はできるのでしょうか? よろしくおねがいします。

  • FAX受信したデータをNASにも同時に送信したい

    業務用複合機(FAX/コピー/スキャナー)でスキャンしたデータをNAS(ファイルサーバ)に送信するように、スキャンデータの送信先としてSMB指定をしています。 FAXは受信すると普通に紙の媒体で自動で出てきますが、FAX受信と同時にそのデータを指定したNASにもpdfかjpgで送信するように出来ませんか? もしくは他に良い方法はありませんでしょうか? 【やりたいことのイメージ】 FAX受信→紙の媒体として自動で出力される(本来の使い方)      →同時に指定したNASにもそのデータ(pdf等)を送信 ※スキャンしたデータはpdfまたはjpgにするかの指定は複合機で指定出来ます。 業務用複合機:KONICA MINOLTA C200 複合機とNAS機器(ファイルサーバ)は同じサブネットに存在しています。

  • FTPのZip,tarファイルの転送

    Zipファイル、tarファイルなのどの圧縮ファイルをBinaryモードで転送↓場合その中に含まれているファイルはBinaryモードで転送されるのでしょうか? 例えば、Zipファイルに含まれているファイルがテキストファイル(Ascii転送)だけの場合、そのZipファイルはAsciiで転送するべきなのでしょうか Binaryで転送するべきなのでしょうか・ Zipに含まれているファイルがイメージファイル(binary転送)だけの場合、そのファイルはBinaryファイル転送で宜しいでしょうか? Zipファイルに含まれているファイルがテキストファイル(Ascii),イメージファイル(binary)両方ある場合は、Zipで転送するのではなく解凍して個別で転送するべきでしょうか? 以上宜しくお願い致します。

  • 7zipデータ解凍時-ファイル○○は書庫として開く事ができません表示

    7zipデータを解凍する時に 【7-zipファイルマネージャ】=4.60を使用しています。 ただ最近ファイルを解凍しようとした時に ほとんどのファイルで 『ファイル"○"は書庫として開くことが出来ません』表示が出ます。 7zipファイルマネージャのサイトの日本語版も見つからなくなってしまって 原因がわかりません・・・。 ご存知の方教えてくださいませm(_ _)m

  • C# フォルダを含まないzipは?

    C#で作成した、CSVをFTPでウェブサーバにアップロードするプログラムがあるのですが、 運用と共にCSVファイルのサイズと数が増えパフォーマンスが悪くなってきたので、 CSVをZIPで圧縮することにしました。 C:\data\read.csv を読み込んで同じ場所に write.zip として出力するという処理を、 System.IO.Compression 系の ZipArchive を使って、   using (var zipStream = File.Create(@"C:\data\write.zip")) {     using (var archive = new ZipArchive(zipStream, ZipArchiveMode.Create)) {       var entry = archive.CreateEntry("read.csv");       using (var sourceStream = File.OpenRead(@"C:\data\read.csv")) {         using (var entryStream = entry.Open()) {           sourceStream.CopyTo(entryStream);         }       }     }   } のようにしてみたところ、C:\data\write.zip は作成されるのですが、 これを解凍すると write\read.csv となってしまいます。 (write フォルダができて、その下に元のCSVができる。) 解凍した際にフォルダを含まないように (フォルダを含んだ圧縮ファイルにならないように) 圧縮することはできませんでしょうか? よろしくお願いします。

  • XMLHttpRequestを利用してPHPへ値を渡したい

    お手数とは思いますが、御導きの程、宜しくお願いします。 ◆プログラムソース 削除対象になるとは思いますが文字数制限により、 別途アップローダーをお借りして、其処にアップロード致しました。 誠に申し訳なく思います。 サイト:小さなアップローダー 様 URL:http://smallup.dip.jp/uploader/ NAME:smallup0515.zip コメント:パソコン何でも質問箱回答者様向け ファイル名:パソコン何でも質問箱.zip downloadパス:okokok 内容: test.html(フォームに値を入力する) test.php(XMLHttpRequestから値を受け取り書き込む) test.js(XMLHttpRequestを利用しPHPへ値を渡す) task.csv(書き込まれた値を保存する) xmlhttp.js(http通信用共通関数) 以上です。ウィルスチェック済みです。 ◆どうしたいか タイトル通りXMLHttpRequestを利用しPHPへ値を送信させたいと思っております。 サイト等を参考に1週間程模索してみたのですが、力量不足でなかなか思い通りになりません。 PHPのプログラムでは値さえ取得できれば、処理を行うことができたので var_dump($_POST)でPOSTされているかを調べたところ空の状態でした。 そこで、値を送信するAjax(JavaScript)側が問題ではないかと思い調べたところ、 open()関数の後にsetRequestHeader()関数を利用しないと ブラウザにより値が送信されないことが分かりました。 しかし、どうもうまく動かず、相変わらずvar_dump($_POST)には空の状態です。 test.jsからtest.phpへ値を渡すにはどのように変更する必要があるのでしょうか? お手数とは思いますが、ご教授ください。

  • formの送信について

    いつもお世話になっております。 今回はFORMの送信についてお聞きします。 htmlでフォームの内容を送るには 1、<form action="xxx.cgi"> <input type="submit">  として送信 2、prototype.js等を使って function send() { var str = Form.serialize('form1'); new Ajax.Request ( "xxx.cgi", { "method": "post", "parameters": str, onSuccess: function() } ); } <form action="" id="form1"> <button onclick="send()"> があるとわかったのですが、両者の違いがわかりません。 2番だと非同期にもできるということはわかるのですが、 そのほかの違いをご教授願います。

専門家に質問してみよう