Siguiendo con el articulo del otro día de uploaders simples, vamos a
picar esta vez algo de código java con la ayuda de mi compañero Daniel
Sanchez. En el ejemplo de uploader de a continuación utilizamos
Alfresco 3.4 Community con las librerías openCMIS (y de manera similar
a como hicimos con python y php en el artículo anterior). Ahí va el código:
package cmis; import java.io.*; import java.math.BigInteger; import java.net.*; import java.util.*; import org.apache.chemistry.opencmis.*; public class OpenCMISUploader { public static void main (String[] args) throws FileNotFoundException { Map<String, String> parameters = new HashMap<String, String>(); parameters.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value()); parameters.put(SessionParameter.ATOMPUB_URL, " http://alfie.zylk.net:8080/alfresco/service/cmis"); parameters.put(SessionParameter.REPOSITORY_ID, "cbcce6d5-2d9d-4878-93ae-de75b96ad14d"); parameters.put(SessionParameter.USER, "admin"); parameters.put(SessionParameter.PASSWORD, "secret"); // create the session Session session = SessionFactoryImpl.newInstance().createSession(parameters); File file = new File(args[0]); String space = args[1]; FileNameMap fileNameMap = URLConnection.getFileNameMap(); String mimetype = fileNameMap.getContentTypeFor(file.getName()); FileInputStream fis = new FileInputStream(file); BigInteger bi = new BigInteger(file.length() + ""); ContentStream contentStream = new ContentStreamImpl(file.getName(), bi, mimetype, fis); Map<String,String> newDocProps = new HashMap<String, String>(); newDocProps.put(PropertyIds.OBJECT_TYPE_ID, BaseTypeId.CMIS_DOCUMENT.value()); newDocProps.put(PropertyIds.NAME, file.getName()); ((Folder)session.getObjectByPath(session.getRootFolder().getPath() + space)) .createDocument(newDocProps, contentStream, VersioningState.NONE); System.out.println("Hecho!"); } }
De esta manera ejecutamos el comando en la terminal:
java -jar CMISUploaderAlfresco.jar /home/cesar/sinadura.pdf test
y esto subirá el fichero sinadura.pdf a /Espacio Raiz/test
Hay que tener en cuenta que en alfresco debemos exponer el
repositorio en alfresco-global.properties
# # CMIS Repo # repo.remote.endpoint.url=http://alfie.zylk.net:8080/alfresco/service/cmis
Y es necesario obtener el uid del repositorio, ya sea a través de:
http://alfie.zylk.net:8080/alfresco/service/cmis/index.html
o bien via curl:
curl -u admin:secret
"http://alfie.zylk.net:8080/alfresco/s/cmis" | grep repositoryId