cancel
Showing results for 
Search instead for 
Did you mean: 

File Upload

ssh
Champ in-the-making
Champ in-the-making
How  to upload the file to the Alfresco Repository  through  JAVA using webscripts.
1 REPLY 1

tde
Champ in-the-making
Champ in-the-making
I presume you mean upload it through HTTP and using java backed web scripts?

I'm pretty sure there is example somewhere on wiki.

Anyway,


public class FileUploadWebScript extends DeclarativeWebScript {

    private ContentService contentService;
    private Repository repository;
    private FileFolderService fileFolderService;

    public void setContentService(ContentService contentService) { this.contentService = contentService; }
    public void setRepository(Repository repository) { this.repository = repository; }
    public void setFileFolderService(FileFolderService fileFolderService) { this.fileFolderService = fileFolderService; }

    @Override
    protected Map<String, Object> executeImpl(WebScriptRequest req, Status status) {
        NodeRef companyHome = repository.getCompanyHome();
        String filename = req.getParameter("filename");

        NodeRef writeTo = fileFolderService.searchSimple(companyHome, filename);

        FormData formData = (FormData) req.parseContent();
        FormData.FormField[] fields = formData.getFields();

        for (FormData.FormField field : fields) {
            if (field.getName().equals("file") && field.getIsFile()) {
                Content content = field.getContent();
                ContentWriter writer = contentService.getWriter(toWrite, ContentModel.PROP_CONTENT, true);
                writer.setMimetype(content.getMimetype());
                writer.putContent(content.getInputStream());
            }
        }

        Map<String, Object> model = new HashMap<String, Object>();
        model.put("output", "Success.");

        return model;
    }

}

You must send it as multipart/form-data. Upper example just replaces content of existing document with what was uploaded.