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.p…
"+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
users(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/users
--
Ludovic Dubost
Blog:
http://blog.ludovic.org/
XWiki:
http://www.xwiki.com
Skype: ldubost GTalk: ldubost