Hi,
This should generally work.
Here is a typical Groovy script we often use to add attachments from
File Uploads
We call it this way for example:
#set($doctitle = $xwiki.getUniquePageName("Space", "title"))
#set($newdoc = $xwiki.getDocument("Space.${doctitle}"))
## attach files if necessary
#set($attachgroovy = $xwiki.parseGroovyFromPage("XWiki.UploadGroovy"))
#if($attachgroovy == "groovy_missingrights")
#warning("no prog rights warning")
#else
#set($nb = $attachgroovy.addAttachments($newdoc, $context))
#if($nb == -10)
#warning("no prog rights warning")
#end
$newdoc.save() or $newdoc.saveWithProgrammingRights().
#end
---
import com.xpn.xwiki.doc.*;
import com.xpn.xwiki.*;
import com.xpn.xwiki.util.Util;
import java.io.*;
import java.util.*;
public class Ajout {
public int addAttachments(doc1, context1) {
def doc = doc1.document;
if (!context1.hasProgrammingRights())
return -10;
def context = context1.context;
if (context==null)
return -10;
def xwiki = context.getWiki();
int nb = 0;
def fileupload = xwiki.getPlugin("fileupload",context)
for (fileitem in fileupload.getFileItems(context)) {
if (!fileitem.isFormField()) {
def name = fileitem.fieldName
byte[] data = fileupload.getFileItemData(name, context);
if ((data!=null)&&(data.length>0)) {
String fname = fileupload.getFileName(name, context);
int i = fname.lastIndexOf("\\");
if (i==-1)
i = fname.lastIndexOf("/");
def filename = fname.substring(i+1);
filename = filename.replaceAll("\\+"," ");
def attachment = doc.getAttachment(filename);
if (attachment==null) {
attachment = new XWikiAttachment();
doc.getAttachmentList().add(attachment);
// Add the attachment to the document
attachment.setDoc(doc);
}
attachment.setContent(data);
attachment.setFilename(filename);
// TODO: handle Author
attachment.setAuthor(context1.user);
doc.setAuthor(context1.user);
doc.setCreator(context1.user);
doc.saveAttachmentContent(attachment, context);
nb++;
}
}
}
return nb;
}
}
Ajdin Brandic a écrit :
> I'm executing some code on Save which attaches a PNG file to a document
> that was edited/saved.
>
> When I call docObj.saveAttachmentContent(attP, context); the attachment
> is save OK but any changes made to my document (ie. text changes) are
> not saved.
> If I comment out this line the text changes are saved, but off course
> not the attachment.
>
> Is this normal behaviour, what do the developers think?
>
> def imgAsBites =
> xwiki.getURLContentAsBytes("http://www.websequencediagrams.com/index.php
> "+umlImage, context);
> def attP = docObj.getAttachment(filenameToSavaAs);
> if(!attP)
> {
> attP = new
> com.xpn.xwiki.doc.XWikiAttachment(docObj,filenameToSavaAs);
> docObj.getAttachmentList().add(attP);
> println "NO Attach";
> }
> attP.setContent(imgAsBites);
> docObj.saveAttachmentContent(attP, context);
>
> Regards
> Ajdin
>
>
> --------------------------------------------------------
>
> NOTICE
>
> This message and any files transmitted with it is intended for the addressee
> only and may contain information that is confidential or privileged.
> Unauthorised use is strictly prohibited. If you are not the addressee, you
> should not read, copy, disclose or otherwise use this message, except for the
> purpose of delivery to the addressee.
>
> Any views or opinions expressed within this e-mail are those of the author
> and do not necessarily represent those of Coventry University.
> _______________________________________________
> users mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/users
>
>
--
Ludovic Dubost
Blog: http://blog.ludovic.org/
XWiki: http://www.xwiki.com
Skype: ldubost GTalk: ldubost
_______________________________________________
users mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/users