Servlet pour télécharger des fichiers à partir d'un dossier spécifique?

Je suis nouveau sur la technologie JAVA,en particulier les Servlets.J'ai besoin de faire un projet d'application Web qui ont un téléchargement et télécharger des fichiers vers/à partir d'un serveur(tomcat).J'ai déjà un chargement de la servlet,qui fonctionne très bien.

j'ai aussi un téléchargement servlet,trouvés sur l'internet.Mais le problème est que cette servlet permet de télécharger un fichier et le chemin d'accès à ce fichier spécifique est donnée dans la servlet. J'ai besoin de laisser le client à voir tout le contenu de mon dossier de téléchargement et de sélectionner le fichier qu'il veut télécharger à partir de ce dossier.

Le code de la télécharger servlet est-ce:

import java.io.DataInputStream; 
import java.io.File; 
import java.io.FileInputStream;
import java.io.IOException;
import javax.servlet.ServletContext; 
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DownloadServlet extends javax.servlet.http.HttpServlet implements
javax.servlet.Servlet {
static final long serialVersionUID = 1L;
private static final int BUFSIZE = 4096;
private String filePath;`
public void init() {
//the file data.xls is under web application folder
filePath = getServletContext().getRealPath("")  + File.separator;//+ "data.xls";
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
File file = new File(filePath);
int length   = 0;
ServletOutputStream outStream = response.getOutputStream();
ServletContext context  = getServletConfig().getServletContext();
String mimetype = context.getMimeType(filePath);
//sets response content type
if (mimetype == null) {
mimetype = "application/octet-stream";
}
response.setContentType(mimetype);
response.setContentLength((int)file.length());
String fileName = (new File(filePath)).getName();
//sets HTTP header
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
byte[] byteBuffer = new byte[BUFSIZE];
DataInputStream in = new DataInputStream(new FileInputStream(file));
//reads the file's bytes and writes them to the response stream
while ((in != null) && ((length = in.read(byteBuffer)) != -1))
{
outStream.write(byteBuffer,0,length);
}
in.close();
outStream.close();
}
}

La page JSP est-ce:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Download Servlet Test</title>
</head>
<body>
Click on the link to download: <a href="DownloadServlet">Download Link</a>
</body>
</html>

J'ai cherché beaucoup de servlets, mais tous étaient comme ça...ils ont permis le téléchargement d'un fichier.
Quelqu'un peut-il m'aider?
Merci beaucoup!

  • Qu'avez-vous essayé? Avez-vous fait des modifications au code que vous avez téléchargé? Quels changements avez-vous fait? Ce qui a fonctionné? Ce qui n'a pas? Avez-vous fait des recherches au-delà de simplement à la recherche d'une solution complète que vous pouvez télécharger? Simplement copier et coller du code à partir de l'internet ne va pas très loin, vous aurez à faire votre propre travail parfois.
  • Je vous remercie pour votre réponse. Comme je l'ai dit,le code ci-dessus fonctionne très bien pour téléchargement uniquement un fichier donné comme un chemin d'accès dans la Servlet.Dans cet exemple,dans la fonction init (). J'ai essayé de donner un chemin comme une chaîne de caractères pour le chemin d'accès du fichier d'attribut.exemple: filepath = "C://Apache//Application//data//",mais j'ai reçu un message d'erreur:Accès refusé. J'ai essayé autre chose: faire une liste du contenu du dossier dans ma JSP avec un attribut de fichier et listFiles méthode,puis j'écris " <a href="<%=fichier.getAbsolutePath()%>" target="_blank"><br> <%=fichier.getName() %>' mais qui ne travaillaient que dans I. E. avec enregistrer la cible sous.
  • essayez d'utiliser un autre chemin, comme C:\\external\\path. Aussi, assurez-vous que votre utilisateur a les autorisations nécessaires pour écrire dans ce dossier. Je n'ai pas compris cette info car je suppose que tu le savais déjà.
  • Je suis très nouveau à la programmation JAVA.J'ai essayé beaucoup de choses à gérer la façon de résoudre mon problème mais je n'ai pas trouver de solution. Je vais essayer de plus,et si je trouve une solution,je vais le poster ici.
InformationsquelleAutor AdiCrainic | 2013-04-02