3

我的几个时间线项目设计需要多个图像,但我很难将它们全部可靠地附加。timeline.insert 函数似乎只允许一个附件,并且在插入时间线项目后插入附件有时会导致图像不被渲染。

我还尝试在时间线项目本身上使用 setAttachments,但在插入项目时它似乎并没有真正上传附件。使用下面的代码,我往往会得到好坏参半的结果。有时它可以工作,有时它无法渲染图像。似乎与我在收到通知后等待查看通知的时间有关,如果我查看得太快,它永远不会完全呈现。

有没有人对我如何克服这个或看到我做错了什么有任何想法或建议?

//CardFactory.java - Create TimelineItem with attachment list
public static TimelineItem getConceptCard(String conceptImage) {
    TimelineItem timelineItem = new TimelineItem();
    timelineItem.setHtml("<article class=\"photo\">\n <img src=\"attachment:0\" width=\"100%\" height=\"100%\">\n <div class=\"photo-overlay\"/>\n <section>\n <p class=\"text-auto-size\">Test</p>\n </section>\n</article>\n");
    List<Attachment> attachments = new ArrayList<Attachment>();
    Attachment img1 = new Attachment();
    img1.setId("backImage");
    img1.setContentType("image/jpeg");
    img1.setContentUrl(WebUtil.buildStaticImgUrl("cardconcepts/" + conceptImage + ".JPG"));
    attachments.add(img1);
    timelineItem.setAttachments(attachments);
    timelineItem.setNotification(new NotificationConfig().setLevel("DEFAULT"));
    return timelineItem;
}




//MainServlet.java - Send TimelineItem on button press
} else if (req.getParameter("operation").equals("insertConceptCard")) {
    TimelineItem timelineItem = CardFactory.getConceptCard(req.getParameter("conceptCard"));
    MirrorClient.insertTimelineCard(credential, timelineItem);




//MirrorClient.java - Insert TimelineItem with multiple attachments
public static void insertTimelineCard(Credential credential, TimelineItem item) throws IOException {
    Mirror.Timeline timeline = getMirror(credential).timeline();
    TimelineItem timelineItem = timeline.insert(item).execute();
    for(Attachment TAttach : item.getAttachments()){
        InputStreamContent mediaContent = new InputStreamContent(TAttach.getContentType(), new URL(TAttach.getContentUrl()).openStream());
        timeline.attachments().insert(timelineItem.getId(), mediaContent).execute();
    }
4

1 回答 1

0

我不确定是否可以根据您的要求,但如果附件是公共图像,您实际上不需要附加它们。您可以将 img 标记与普通的 http URL 一起使用。我的经验是,这些获取得相当快,如果您经常使用它们会被缓存,并且即使它们没有立即渲染也能正确渲染。

(即使您的要求需要使这些更加私密,您也可能希望使用带有某种随机数的标准图像获取而不是尝试附加它们。我意识到这并不能完全回答您的问题,但它可能是一个有用的解决方法.)

于 2013-10-23T00:46:34.403 回答