- PR -

ファイル保存ダイアログ

投稿者投稿内容
matsu
会議室デビュー日: 2004/06/03
投稿数: 7
投稿日時: 2005-03-31 10:41
お世話になります。JSP、サーブレットで開発をしているものです。
質問なのですが、JSPの画面上からファイルの保存先を指定するためのダイアログを表示して、
任意のファイル名をつけてファイルを保存するという処理は可能なのでしょうか?
ちなみに保存するファイルは、画面上でファイル名を指定した後に処理をサーバー側に渡した後で自動的に生成されるようになっています。

<input type="file" name="filename" size="60">などと書いてみたのですが
これだとダイアログは開けるのですが、一覧にないファイル名を入力すると
「上記のファイル名は無効です」とメッセージが出てしまいます。

わかる方がいらっしゃいましたらご教授お願い致します。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-03-31 10:46
ファイルを実際に生成するのはサーバ側ですので、FileOutputStream かなんかをオープンするときに任意の名前をつければ良いかと思います。
アップロードしたファイルの保存になにかライブラリをお使いでしたら、ファイル名を決定する API がないか確認してみましょう。
または File#renameTo() で後からファイル名を変えるとか。
matsu
会議室デビュー日: 2004/06/03
投稿数: 7
投稿日時: 2005-03-31 11:49
インギさん返答ありがとうございます。

そもそも<INPUT TYPE="file" 〜>としていた時点でおかしいと気づきました。
これはファイルのアップロードに使用するものですよね。
なのでファイルを選択しないとならないというのは当然だと思いました。
質問としてはファイルの保存先を指定するダイアログを表示できないかということになります。ファイルのアップロードとは全然関係がないものです。

ファイルのリネームということですがこれは可能ですね。
画面上でダミーでファイルを選択しておいて、それをファイルの保存先と仮定しておく。
そこからサーバ側でファイルの部分だけ入れ替えるということを実際にやってみました。
これはできました。
しかしこれだと対象の保存フォルダにファイルがない場合は「開く」ボタンをを押下しても何も起こらないのでダメでした。
当たり前といえば当たり前なのですが…。

やはりJSPでは「ファイルの保存先を指定するダイアログの表示」というのは無理なのでしょうか?
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-03-31 12:44
<input type="file" name="filename" size="60">ってのはファイルをアップロードする際に使うものです。
ダウンロードするときのファイル名についての話題は過去のスレッドにもたくさんありますので検索してみましょう。

"保存 ファイル名 ダイアログ ダウンロード" といったキーワードでこの掲示板を検索したらそれっぽいのが出てきました。

Java や JSP に限った話ではなさそうなのでひょっとするとこちらの掲示板の方が適切かもしれません。
http://www.atmarkit.co.jp/bbs/phpBB/viewforum.php?forum=28
VIM
ベテラン
会議室デビュー日: 2003/11/14
投稿数: 76
投稿日時: 2005-03-31 13:17
# 素人意見ですので、誤っているようでしたら指摘してください。

>保存するファイルは
>画面上でファイル名を指定した後に
>処理をサーバー側に渡した後で
>自動的に生成されるようになっています。

(1)画面上でファイル名を指定
(2)処理をサーバー側に渡す
(3)保存するファイルを自動的に生成
ではなく、
(1)処理をサーバー側に渡す
(2)保存するファイルを自動的に生成
(3)(2)でできたファイルを保存するファイル名を指定する
という順番では、だめなのでしょうか?

一般的にボタンを押してファイルをダウンロードする仕掛けは、
<input type="button" value="Click" onClick="location.href='./zzz.lzh';"></input>
こんな感じなので、
ファイルを生成するのがjspだとすれば、
<input type="button" value="Click" onClick="location.href='./zzz.jsp';"></input>
でよいのでは?

あとは、そのzzz.jspが吐き出すcontent-type次第だと思います。
matsu
会議室デビュー日: 2004/06/03
投稿数: 7
投稿日時: 2005-03-31 15:23
インギさん、VIMさんありがとうございます。

VIMさんのやり方は間違っていないです。
しかし、今回の趣旨と少し外れてしまします。
今回の趣旨は
画面側では
1.ファイル名を指定する(テキストボックスで入力)
2.ファイルを保存する場所も指定したい(テキストボックスではダメ)
3.上記2つを指定した後にSubmit
サーバ側では
4.ファイル名、ファイル保存先を受け取る
5.ファイルを作成して指定されたファイル保存先に、そして指定されたファイル名でファイルを保存
という感じになります。
ファイルはダウンロードするのでもなく作成された後に指定した保存先に保存したいのです。

大事なのはファイル名とファイル保存先が画面上で指定できる、というところにあります。
ファイル名はテキストボックスなどで入力させれば簡単です。
しかしファイルの保存先はテキストボックスで入力させると、
入力時になどで("\\")が抜けてしまったりなどのミスが生じる可能性があるので
それを避けるために「ファイルの保存先を指定できるダイアログ」というのをJSPで表示して
絵的に見て簡単にユーザが保存先を選択できる、という感じにしたかったのですが
その「ダイアログ」を表示するのがなかなか難しいようです。

インギさん
参考になりそうなのがあるかもしれないのでもう少し見てみます。
永井和彦
ぬし
会議室デビュー日: 2002/07/03
投稿数: 276
お住まい・勤務地: 東京都
投稿日時: 2005-03-31 16:10
matsuさんのやりたいことは、多分、不可能です。

引用:

5.ファイルを作成して指定されたファイル保存先に、そして指定されたファイル名でファイルを保存



それが可能なら、hostsとか、もっとヤバそうなファイルとかを黙って上書き出来てしまいます……
VIM
ベテラン
会議室デビュー日: 2003/11/14
投稿数: 76
投稿日時: 2005-03-31 16:14
クライアントからHDD内のフォルダ情報をサーバーに送って、
jspがその情報を元にフォルダ選択画面を作るというを考えているのであれば、
「クライアントからHDD内のフォルダ情報をサーバーに送る」部分が
無理っぽいと思います。
セキュリティ上、そんなことができたらマズイでしょう。

サーバー側のjspだけでは無理なんじゃないでしょうか。
クライアント側で行う、DHTMLやActiveX, JavaAppletが得意そうな分野だと思いますね。

スキルアップ/キャリアアップ(JOB@IT)