2012-02-15 17 views
2

これは私が必要とするものです。空想的です。 ドキュメントに添付されているファイルからURLを作成していますが、ドキュメントは開かれていません。私は特定の文書から添付ファイルを見たいxpageを持っています。これはどうすればいいですか?添付ファイルからの取得

ありがとうございます。

答えて

6

@AttachmentNames(ビュー列内)を使用してファイルの名前を取得するのが最も簡単な方法です。その後、db.nsf/0/unid/$ file/[filename]を使用してURLを構築することができます。これは古典的ですが、XPiNCでは実行されません。

http:s [yourserver]/[application.nsf] /xsp/.ibmmodres/domino/OpenAttachment/ [application.nsf]という2つ目のURL構文があります(チェックする必要があります)。 ]/[UNID |/$ファイル/ [ATTACHMENTNAME]オープン

ここでの私の記事全文を読む:http://www.wissel.net/blog/d6plinks/SHWL-86QKNM

を(SSJSのサンプルが含まれます)

+0

ありがとうございました。 私はこれをやろうとしていましたが(ここでは読めません)[link](http://pastebin.com/mecN1FLf) これは別のXpage上にありますが、完璧に動作しますが、 – gkidd

4

私はURLを取得するためのDominoDocument.AttachmentValueHolder.getHref()作品ことがわかりました?添付ファイルまたはイメージ(ドキュメントにハンドルがある場合)。たとえば:

<xp:image 
    id="image1"> 
    <xp:this.url> 
     <![CDATA[#{javascript:document1.getAttachmentList("Body").get(0).getHref()}]]> 
    </xp:this.url> 
</xp:image> 

あなたはgetAttachmentList()から返される要素を反復することにより、複数の添付ファイルを処理する必要があります。

1

あなたが

import com.ibm.xsp.extlib.util.ExtLibUtil; 
    import lotus.domino.MIMEEntity; 
    import lotus.domino.Document; 
    import lotus.domino.Session; 
    import java.io.File; 
    import java.io.FileInputStream; 
    import java.io.IOException; 
    import java.io.InputStream; 
    import java.io.Serializable; 
    import java.text.SimpleDateFormat; 
    import java.util.ArrayList; 
    import java.util.Date; 
    import java.util.Vector; 
    import lotus.domino.Database; 
    import lotus.domino.DocumentCollection; 
    import lotus.domino.EmbeddedObject; 
    import lotus.domino.Item; 
    import lotus.domino.MIMEHeader; 
    import lotus.domino.NotesException; 
    import lotus.domino.RichTextNavigator; 
    import lotus.domino.RichTextItem; 
    import lotus.domino.Stream; 
    import lotus.domino.View; 
    // ... 
    private String fileSeparator = File.separator; 
    private String tempPath = System.getProperty("java.io.tmpdir") + fileSeparator + "Temp" + fileSeparator; 
    // ... 
    private void saveFilesFromDoc(Document doc) throws NotesException { 
    if (doc.hasEmbedded()) { 
     RichTextItem body = null; 
     try { 
      body = (RichTextItem) doc.getFirstItem("body"); 
     } catch (ClassCastException e) { 
      // save file from MIME (Rich text is converted to MIME) 
      MIMEEntity mime = doc.getMIMEEntity(); 
      findMimeWithFile(mime); 
      return; 
     } 
     if (body != null) { 
      // save file from richtext 
      RichTextNavigator rtnav = body.createNavigator(); 
      if (rtnav.findFirstElement(RichTextItem.RTELEM_TYPE_FILEATTACHMENT)) { 
       do { 
        EmbeddedObject att = (EmbeddedObject) rtnav.getElement(); 
        String fileName = att.getSource(); 
        fileName = notConflictFileName(fileName); 
        String path = tempPath + fileName ; 
        att.extractFile(path); 
       } while (rtnav.findNextElement()); 
      } 
     } else { 
      // ("BODY is NULL"); 
     } 
    } 

MIMEエンティティは、添付ファイル(またはテキスト)であれば、調べるマイム

private void findMimeWithFile(MIMEEntity mime) { 
    try { 
     askMimeForFiles(mime, ""); 
     MIMEEntity child = mime.getFirstChildEntity(); 
     while (child != null) { 
      askMimeForFiles(child, "child"); 
      // String encoding = "ISO-8859-2"; 
      String c = child.getContentType(); 
      MIMEEntity subChild = child.getFirstChildEntity(); 
      askMimeForFiles(subChild, "subChild"); 
      if ("multipart".equals(c)) { 
       while (subChild != null) { 
        askMimeForFiles(subChild, "subChild2"); 
        // String sc = subChild.getContentType(); 
        subChild = subChild.getNextSibling(); 
       } 
      } 
      child = child.getNextSibling(); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

にリッチテキスト変換したからファイルを取得(のXPagesのように)は、Javaを使用することができる場合その後、

private void askMimeForFiles(MIMEEntity mime, String prefix) throws NotesException { 
    if (mime != null) { 
     boolean thisMimeHasFile = false; 
     String fileName = "noname"; 
     Vector<MIMEHeader> headers = mime.getHeaderObjects(); 
     for (MIMEHeader header : headers) { 
      // (prefix + "-header: " + header.getHeaderName() + " :: " + header.getHeaderValAndParams()); 
      if ("Content-Transfer-Encoding".equals(header.getHeaderName())) { 
       if ("binary".equals(header.getHeaderVal())) { 
        thisMimeHasFile = true; 
       } 
      } 
      if ("Content-Disposition".equals(header.getHeaderName())) { 
       String val = header.getHeaderValAndParams(); 
       int odd = val.indexOf("filename=") + "filename=".length(); 
       int doo = val.length(); 
       fileName = val.substring(odd, doo); 
       this.fileNames.add(fileName); 
      } 
     } 
     if (thisMimeHasFile) { 
      safeFilesFromMIME(mime, fileName); 
     } 
    } 
} 

MIMEは、添付ファイルである場合は、それを

を保存
private void safeFilesFromMIME(MIMEEntity mime, String fileName) throws NotesException { 
    Session session = ExtLibUtil.getCurrentSession(); // or user variableResolver 
    Stream stream = session.createStream(); 
    String pathname = tempPath + fileName; 
    stream.open(pathname, "binary"); 
    mime.getContentAsBytes(stream); 
    stream.close(); 
} 
関連する問題