locked
Silverlight3 のSaveFileDialogにデフォルトファイル名を指定したい RRS feed

  • 質問

  • いつも参考にさせて頂いています。

    先日、公開された Silverlight3 ベータ版をさっそく使わせて(検証させて)頂いています。

    今回、サーバ上に保存しているファイルを HyperLinkButton で表示し、
    クリックされたらそのファイルをダウンロードして、ユーザが指定したフォルダに保存しようと
    思いました。そこで、Silverlight3 で追加された SaveFileDialogクラスを使ってみました。

    結果、IsolatedStorage 以外にも保存できることを確認して喜んでいたのですが、
    1点問題点がありました。

    それは、SaveFileDialog にはデフォルトファイル名を指定出来ない(デフォルト拡張子は指定できる)
    と言うことです。画面には、ファイル名を HyperLinkButton として表示してあるので、特に問題
    無ければファイル名はそのまま保存出来れば良いかな。。と思っていたのですが、ファイル名が
    デフォルトで設定出来ないので、必ずファイル名をユーザが入力する必要があります。

    これは、正式リリースされてもやはりデフォルトファイル名は設定出来ないと考えた方が良いでしょうか。。。

    また、ファイルのダウンロードを Silverlight で実現する場合、他にどの様な手段がありますでしょうか。
    最初は普通に HtmlPage.Window.Navigate(new Uri("http://~/ファイル名", "_blank") ) とすると、
    ブラウザの方で勝手に開けるものは開いて、開けないものはファイルの保存ダイアログを出してくれる
    かと期待していたのですが、pdfファイル等は開けたのですが、zipファイルはダウンロード出来ない
    みたいでした。。(一瞬新しいタブが開いてすぐに閉じる。。)

    何か他に良案があれば、ご教授頂ければ幸いです。
    よろしくお願いします。
    2009年4月22日 3:22

回答

  • SaveFileDialogクラスにおいて、Silverlight 3 ベータ版におけるドキュメントを見る限り、デフォルトのファイル名は設定できません。
    おそらくユーザーがファイル名を入力することで、意図せぬファイル保存を実行できないようにするためのセキュリティ上の設計だと思われます。
    正式リリース時にどうなるかはわかりませんが、セキュリティ要件が優先されるのではないかと思います。

    一方、SilverlightからWebサーバーへのリクエストは、WebClientなどで実行する方法があります。
    http://msdn.microsoft.com/ja-jp/library/cc197953(VS.95).aspx
    Silverlight JavaScript APIのDownloaderオブジェクトと同様の使い方が出来ますが、クロスドメインの制約があります。

    ネットワークアクセスのセキュリティについては、詳しくは次のドキュメントをご覧ください。
    http://msdn.microsoft.com/ja-jp/library/cc645032(VS.95).aspx
    この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。詳しくは http://www.microsoft.com/japan/communities/msp.mspx をご覧ください。
    • 回答としてマーク mrt136 2009年6月9日 3:08
    2009年6月8日 12:19

すべての返信

  • SaveFileDialogクラスにおいて、Silverlight 3 ベータ版におけるドキュメントを見る限り、デフォルトのファイル名は設定できません。
    おそらくユーザーがファイル名を入力することで、意図せぬファイル保存を実行できないようにするためのセキュリティ上の設計だと思われます。
    正式リリース時にどうなるかはわかりませんが、セキュリティ要件が優先されるのではないかと思います。

    一方、SilverlightからWebサーバーへのリクエストは、WebClientなどで実行する方法があります。
    http://msdn.microsoft.com/ja-jp/library/cc197953(VS.95).aspx
    Silverlight JavaScript APIのDownloaderオブジェクトと同様の使い方が出来ますが、クロスドメインの制約があります。

    ネットワークアクセスのセキュリティについては、詳しくは次のドキュメントをご覧ください。
    http://msdn.microsoft.com/ja-jp/library/cc645032(VS.95).aspx
    この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。詳しくは http://www.microsoft.com/japan/communities/msp.mspx をご覧ください。
    • 回答としてマーク mrt136 2009年6月9日 3:08
    2009年6月8日 12:19
  • 大西 様

    ご回答ありがとうございます。

    やはりそうなんですね。薄々はセキュリティに絡むからなんだろうなぁ。。とは思っていましたが。。
    ただ、ファイル名は分っている(画面上で見えている)のに、あえて入力しないといけないと言うのは
    少々不便さを感じますね。

    これ以外でもSilverlight3良いですね。正式リリースに期待しています。
    ありがとうございました。
    2009年6月9日 3:07