2016-06-16 2 views
0

以下のコードは、私のカスタムコントロールのイメージコントロールの計算されたイメージソースです。私がそれを立てたように動かすと、それはphoto.jpgに入れられ、うまく動作します。問題は、プログラムでその値を渡したいということです。私はアップロードコントロール(fileUpload1)とダウンロードコントロール(fileDownload1)もカスタムコントロールに持っています。私はjpgファイルが格納されているdocument1.photoを試してみました。私はcurrentdocument.getitemvalue、getitem、getattachmentsのいくつかのバリエーションを試しました。しかし、これまでのところ、私はこれを行う方法がないことを発見しました。また、filenameの値をアップロードコントロールとダウンロードコントロールの値に設定しようとしましたが、成功しませんでした。このコードでプログラムでファイル名を使用するにはどうすればよいですか?

私はこれがおそらく単純だと知っていますが、クライアントの開発者としてはそれは簡単ではありません。

ご協力いただければ幸いです。

var doc:NotesDocument = currentDocument.getDocument(); 
var UID:string = doc.getUniversalID().toString(); 
var fp:string = database.getFilePath(); 
var filename = "photo.jpg" 

return '/0/' + UID + '/$file/' + filename 

おかげで、 MJ

答えて

1

があり、これを達成するための他の方法であってもよいが、ここで私は通常仕事だことがあります。

私は、計算リソースのURLは、ほとんどのケースであることを認識する必要があるイメージコントロールでデータベースファイル名で終わるデータベースの相対パスが先頭に付いています。あなたは私が1 Iであるそれらのどちら見つける必要があり、あなたのドキュメントに取り付けられた1つの以上のファイルを持っている可能性があるので、もし私が追加する必要があり、すべては

/0/docUnid/$File/imageFileName 

のように通常の添付ファイルのURLです表示したいこれはjava.util.ListNotesEmbeddedObjectの要素を提供し

currentDocument.getAttachmentList(fieldName) 

をループすることによって行うことができます。 .getName()のようなメソッドを使用して、私はあなたが探している1つのファイルを見つけることができます。

EDIT:
簡単な例複数の画像を表示するために繰り返しを使用しては(特に、より良い解決策があるかもしれない単一リッチテキストフィールドにsattached不要なファイルの種類をフィルタリングする方法については、私は、ファイルの拡張子を使用しています、のみ。 .jpg、.png、.gifを許可)。画像は、単純なHTMLのリスト要素として表示されます。

<ul> 
    <xp:repeat id="repeat1" rows="30" var="pic"> 
     <xp:this.value><![CDATA[#{javascript: 
    var att:java.util.List=docCar.getAttachmentList("Body"); 
    var it=att.listIterator(); 
    //new empty array, to be used as the repeater's datasource 
    var arr=[]; 
    //build base path for each image file 
    var unid=docCar.getDocument().getUniversalID(); 
    var p="/0/" + unid + "/$File/"; 
    while(it.hasNext()){ 
     var e:NotesEmbeddedObject=it.next(); 
     if(e.getName().endsWithIgnoreCase(".png") || 
      e.getName().endsWithIgnoreCase(".jpg") || 
      e.getName().endsWithIgnoreCase(".gif")){ 
      //push complete filepath + image filename to array 
      arr.push(p + e.getName()); 
     } 
    } 
    return arr;}]]></xp:this.value> 
     <li> 
      <xp:image url="#{javascript:pic}" id="image1"> 
      </xp:image> 
     </li> 
    </xp:repeat> 
</ul> 

希望、これはまあ

+0

だから、どのように私は、値を計算しますイメージファイル名の?私が上で説明したように –

+0

:currentDocumentを呼び出すことによって。getAttachmentList(fieldName)(指定されたフィールドから埋め込みオブジェクトの一覧を取得する)またはJSバージョンの@AttachmentNamesを使用して自分で記述したメソッドを使用する(ドキュメント内の任意の場所に保存されているファイル名のリストを取得する) –

0

を助け、私はそれが考え出したと思います。以下は現在動作するコードです:

var doc:NotesDocument = currentDocument.getDocument(); var UID:string = doc.getUniversalID()。toString(); var fp:string = database.getFilePath();

VARファイル名= @AttachmentNames()

リターン '/ 0 /' + UID + '/ $ファイル/' +ファイル名

MJ

+0

はい ヒント:ドキュメントに複数の添付ファイルが含まれている可能性がある場合は、予防措置を講じる必要があります。 @AttachmentNamesはファイルが格納されているRTフィールドに関係なく名前のリストを提供しています。また、添付ファイルがない場合や画像以外の添付ファイルタイプがある場合も処理する必要があります。 –

+0

提案をお寄せいただきありがとうございます。私が得ることができるすべての援助が必要です。複数の添付ファイルと添付ファイルを処理する方法のサンプルコードがある場合は、それを調べることに興味があります。 –

+0

1:複数の添付ファイルは扱いにくいわけではありません。今週末に簡単な例を考えてみましょう 2:異なるファイルタイプを扱うのは簡単ではありません:NotesEmbeddedオブジェクトはファイルタイプには無関係なので、ファイル拡張子をチェックする必要があります。私は間違っているかもしれませんが、多分誰かがこれを処理する適切なアイデアを持っているかもしれません。さもなければ、.png、.jpg、または.gif以外の拡張子が付いたものは除外することができます。本当に完璧ではない、と私は認めている。しかし、それ以外の場合は、ファイル自体を分析するためにJavaクラスを探す必要があるかもしれません。 –

関連する問題