No.1
- 回答日時:
>バイナリデータを受け取っている
サーバー側でhttpのヘッダーでContent-typeを吐き出してやれば
ダイアログがでるとおもいますよ。
(javascriptの機能ではありません)
この回答への補足
ご回答ありがとうございます。
すいません、説明不足でした。
データの受け取りはHTTPではなく、SOAPリクエストに対するRPCの返値です。
ヘッダ等受け取らず、バイナリデータそのものを取得しています。
データそのものをJavascriptでファイル保存できればと思ったのですが、
可能なのでしょうか?
No.3ベストアンサー
- 回答日時:
>勝手に名前をつけて、勝手なディレクトリに保存できれば
これができたらウィルス仕掛け放題。
だからできないようになってるわけで、
リンクをクリックすると「ダウンロードファイルを保存しますか?」のアレしかできないって話。
度々のご回答ありがとうございます。
手段はどうあれ、受け取ったバイナリデータを、
HTMLとJavaScriptの機能のみで保存は不可ということですね。
ブラウザのAPIなどと合わせて実現できないか検討してみます。
No.4
- 回答日時:
>ブラウザのAPIなどと合わせて実現
そういうことならIEでVBScriptをつかってみるのも手かと。
もちろんfirefoxでは利用できませんが。
実際、データを保存させたいなら、#1の方法がスタンダードで
一度うけとってからファイルを保存させるという方法に固執する
必要はないと思いますが
ご回答ありがとうございます。
FireFoxでも似たAPIを発見しましたので、色々調査してみたいと思います。
今回は、サーバ側で動的生成されたデータをクライアント側で保存させたいという目的のため、サーバデータをダウンロードする方法は使えませんでした。(サーバにもデータは保存されていないため)
ご教授ありがとうございました。
No.5
- 回答日時:
VBScriptの話が出てますが、
ファイル環境(file://~、c:\~)で実行した場合、
FileSystemObjectが利用でき、好きな場所に保存可能です。
(ActiveXの確認ダイアログは出ると思います。)
しかし、サーバ環境(http://~)で実行した場合は、
FileSystemObjectは使えません。エラーになります。
VBScriptでもファイルに直に保存する事は出来ません。
これも、セキュリティ上の制限だと思います。
-------------------------------------------------
セキュリティ上の理由で、ブラウザから直に保存する方法は、
如何なる方法でも、存在しないのではないでしょうか?
エコーサーバ的な物を用意して、保存するのが簡単だと思います。
CGIが利用できるサーバが有れば簡単に実現できます。
-------------------------------------------------
サンプル
JavaScriptで作成したバイナリデータを、ファイルに保存します。
(サーバのCGI経由でダウンロードして保存)
HTMLでは、バイナリデータをエンコードし、CGIへPOST。
CGIでは、受け取ったデータをデコードし、バイナリデータとして返す。
結果、ダウンロードの画面が開き、ユーザが保存場所を指定して、
保存できます。
sample.html
---------------------------------------------
<html>
<head>
<script type="text/javascript">
<!--
function test(){
//テストデータの作成(0~255の256バイトのデータ)
//テキストにエンコードしておきます。
var dat = "";
for(var i = 0; i < 256; i++){
if(i < 16) dat += "%0" + i.toString(16);
else dat += "%" + i.toString(16);
}
//Form作成
var f = document.createElement("form");
document.body.appendChild(f);
f.action = "http://localhost/cgi-bin/echo.cgi";
f.method = "POST";
f.target = "_blank";
//Input作成
var inp = document.createElement("input");
f.appendChild(inp);
inp.name = "data"
inp.value = dat;
//送信
f.submit();
}
//-->
</script>
<title>保存テスト</title>
</head>
<body>
<a href="javascript:test();void(0);">test実行</a>
</body>
</html>
---------------------------------------------
echo.cgi(perl)
---------------------------------------------
#!/usr/local/bin/perl
binmode(STDIN);
binmode(STDOUT);
%arg = &read_argv();
$dat = $arg{'data'};
$dat = &url_decode($dat);
$len = length($dat);
$fname = "test.dat";
print "Content-Type:application/octet-stream\n";
print "Content-Disposition: attachment; filename=\"$fname\"\n";
print "Content-Length:$len\n";
print "\n";
print $dat;
exit;
sub read_argv(){
my($buf,@pair,%argv,$key,$value);
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $buf, $ENV{'CONTENT_LENGTH'});
} else {
$buf = $ENV{'QUERY_STRING'};
}
@pair = split(/&/, $buf);
foreach (@pair) {
($key,$value) = split(/=/,$_);
$argv{&url_decode($key)} = &url_decode($value);
}
return %argv;
}
sub url_decode(){
my($data) = shift;
$data =~ s/\+/ /g;
$data =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("H2",$1)/eg;
return $data;
}
---------------------------------------------
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- アプリ Edgeを操作するアプリについて 4 2023/05/11 22:48
- MySQL MySQL,JavaScript,PHPコードの結果を表示する方法を教えてください。 1 2023/02/13 17:49
- Word(ワード) PCで作ったwordをスマホで編集しようとすると「このファイルは読み取り専用です。」と表示される。 3 2023/05/30 14:51
- PHP php my adminより取り出したデータ表示 2 2022/06/15 11:56
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- その他(プログラミング・Web制作) セレクトボックスで選択された値をコントローラーで使用したい 2 2022/07/26 16:41
- 画像編集・動画編集・音楽編集 inkscapeで作成した図の保存の仕方とその保存したファイルの編集の仕方 1 2022/09/22 09:33
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2022/03/25 17:03
- その他(ブラウザ) IE・edgeで日増しに観られるサイトが減ってくる。 1 2022/10/04 22:40
- iOS iPhone用動画保存アプリiCapのデータは外付けUSBメモリに保存できますか? 1 2022/10/18 17:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JavaScriptでテキス...
-
ActiveXObjectについて
-
javascriptでのmdb接続について
-
ASP上からサーバサイドのVBScr...
-
node.jsでmysqlをローカル環境...
-
Ajaxが動きません~『status=0』?
-
ブラウザ上でjavascriptを編集...
-
星型評価スターレーティングの...
-
「終了していない文字列型の定...
-
JSPの処理の途中で、JavaScript...
-
VB.NET2003 テキストボックスに...
-
JavaScriptで ブラウザの閉じる...
-
VBScript から JavaScript を呼...
-
「光の三原色」みたいな「三つ...
-
ASP(VBS) ←→ JavaScript の変数...
-
javascriptで最初のところに戻...
-
jquery か javascript で json ...
-
contenteditableで編集した内容...
-
テキストファイルの更新日時を取得
-
javaで「花が散る」
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ブラウザからエクセルを開く方法
-
Ajaxが動きません~『status=0』?
-
JavaScriptでテキス...
-
jsでルートディレクトリより上...
-
javascriptでのmdb接続について
-
JavaScriptによる....
-
JavaScriptでファイルの保存
-
ローカルのtest.txtを1行ずつ...
-
ブックマークレットが動かない。
-
JavaScriptで掲示板
-
ActiveXObjectについて
-
ローカル環境で動作しないJavaS...
-
ブラウザ上でjavascriptを編集...
-
javascriptでテキストファイル...
-
javascriptによるメール送信
-
クリックカウンターの挙動がお...
-
Illustrator でjavascriptによ...
-
ajax 通信 iisの設定?
-
html組込み時のカレントフォル...
-
外部SVGの参照
おすすめ情報