いいね!数

0

閲覧数
412

フォーム上のボタンをクリックするとDBに保存されている文書の添付ファイルを

ダウンロードするという仕組みをつくりたいと思っています。

以下のコードをボタンに書いてみたのですが、うまくいきません。

var path = facesContext.getExternalContext().getRequest().getContextPath();
var v:NotesView = database.getView("File_V");
var doc:NotesDocument = v.getDocumentByKey("文書1",true);
var unid = doc.getUniversalID();
//ファイル名取得***
var ritem  = doc.getFirstItem( "Print_1" );
if ( ritem.getType() == 1 ) {
    if ( doc.hasEmbedded() ) {
        var att:java.util.Vector = ritem.getEmbeddedObjects();
        if ( att.isEmpty() ) {
            return null;
        } else {
            var atti:java.util.Iterator = att.iterator();
            while ( atti.hasNext() ) {
                var obj:NotesEmbeddedObject = atti.next();
                var filename = obj.getSource() ;
            }
        }
    }
}
//***
var path = facesContext.getExternalContext().getRequest().getContextPath();
var url = path + '/0/' + unid + "/$FILE/"+filename ;
return url

 

最後のreturn urlでページが開いてしまいエラーになります。

ファイルをダウンロードさせるにはどうしたら良いでしょうか?

サーバー情報: | クライアント情報: | 
カテゴリ:アプリ開発 - XPages | タグ:
  | 質問日時:2017/08/02 17:20:59

回答・コメント

いいね!数

0

ボタンではなくリンクでの実装だとダメですか?

<xp:link escape="true" value="<ここにSSJSでayaさんのコードを書き込む>">sample file</xp:link>

ayaさんの張り付けたSSJSの動作確認はしていないのですが、「return url 」をしているのでURLがうまく構成されていれば動くと思います。

CSSを使えばリンクをボタンのように見せることも可能です。

回答日時:2017/08/02 17:43:41

いいね!数

0

var url = path + '/0/' + unid + "/$FILE/"+filename ;

return url

 

の部分を

 

var fieldname = ritem.getName();

var url = path + '/xsp/.ibmmodres/domino/OpenAttachment' + path + '/' + unid + '/' + fieldname + '/' + filename ;

return facesContext.getExternalContext().redirect(url);

 

にしたらボタンのままでも動かないでしょうか?

1行目の添付ファイルのフィールド名は、直接していしても良いかと思います。

 

var fieldname = "Print_1";

 

ちなみに私が試した環境は以下の通りです。

<環境>

サーバー:Domino 9.0.1 FP5

ブラウザ:Chrome バージョン: 59.0.3071.115(Official Build) (64 ビット)

 

回答日時:2017/08/02 19:29:34

いいね!数

0

Kazu Tatuskiさん、

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

できれば今回はリンクではなく、ボタンクリックでダウンロードしたいと思っています。

tyoshidaさん、

頂いたコードで無事、ダウンロードができるようになりました。

大変助かります。感謝です!

回答日時:2017/08/03 9:19:03