JAVA Servlet - Download file da repository jackrabbit
Ecco il codice di una servlet che permette il download di un file memorizzato nel repository.
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.jcr.Credentials;
import javax.jcr.ItemNotFoundException;
import javax.jcr.LoginException;
import javax.jcr.Node;
import javax.jcr.PathNotFoundException;
import javax.jcr.Repository;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.SimpleCredentials;
import javax.jcr.ValueFormatException;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DownloadFIle extends HttpServlet{
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String uuid = request.getParameter("uuid");
OutputStream out;
InputStream fis;
try {
Repository repo = connect();
Session s = repo.login();
Node nodeByUUID = s.getNodeByUUID(uuid);
Node nodeContent = nodeByUUID.getNode("jcr:content");
response.setHeader("Content-type",nodeContent.getProperty("jcr:mimeType").toString());
response.setHeader("Content-disposition", "attachment; filename= \""
+ nodeByUUID.getName() + "\"");
//response.setHeader("Content-length", "" + fileDaSpedire.length());
out = response.getOutputStream();
fis = nodeContent.getProperty("jcr:data").getStream();
byte[] buffer = new byte[1024 * 100];
int i = 0;
while ((i = fis.read(buffer)) != -1) {
out.write(buffer, 0, i);
}
out.close();
fis.close();
} catch (LoginException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ItemNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (PathNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ValueFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RepositoryException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public Repository connect() throws Exception {
String username = "myUser";
String password = "myPassword";
Repository repo = null;
try {
InitialContext ctx = new InitialContext();
repo = (Repository)ctx.lookup("java:jcr/local");
} catch (NamingException e) {
e.printStackTrace();
}
Credentials cred = new SimpleCredentials(username,password.toCharArray()) ;
Session s = repo.login(cred) ;
return repo;
}
}
Come libreria è stata utilizzata unicamente "jcr-1.0.rar " contenuta dentro /$Home-jboss-portal/server/default/deploy/jboss-portal.sar/lib
Ovviamente ricordarsi di modificare il file web.xml, inserendo la servlet.
- Aggiungi un commento
- 1020 letture
Una Viola Rosa
Commenti recenti
4 days 6 hours fa
6 days 7 hours fa
2 weeks 3 days fa
8 weeks 3 days fa
26 weeks 2 days fa
28 weeks 5 days fa
29 weeks 1 giorno fa
30 weeks 11 hours fa
30 weeks 5 days fa
36 weeks 1 giorno fa