
import javax.servlet.http.*;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import java.io.FileInputStream;
import java.io.BufferedInputStream;
import java.io.File;

/**
 * <p>Titre : </p>
 *
 * <p>Description : Servlet d'upload de fichier</p>
 *
 * <p>Copyright : Copyright (c) 2001</p>
 *
 * <p>Société : Hardis</p>
 *
 * @author non attribuable
 * @version 1.0
 */
public class sampleLoadFile extends HttpServlet
{
   public sampleLoadFile()
   {
   }

   public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
   {
      String fileName = request.getParameter("FIL");
      // Le nom du fichier est relatif au repertoire de la Webapp.
      // Ex : doc/mon_doc.doc correspond au fichier mon_doc.doc dans le sous-repertoire doc de la Webapp
      String mimeType = request.getParameter("MIME");
      // Type mime du fichier
      // Cf http://www.w3schools.com/media/media_mimeref.asp
      // Attention : les navigateurs ne reconnaissent pas tous les types mime
      // Ex: Pour un fichier PPT :
      // application/powerpoint ok pour IE
      // application/vnd.ms-powerpoint ok pour FF
      ServletOutputStream out = response.getOutputStream();
      FileInputStream fis;
      File file;
      int bytesRead;
      byte tab [] = new byte[1000];

      // Creation du fichier dont le path est donne par le parametre FIL
      file = new File(request.getSession().getServletContext().getRealPath(fileName));
      fis = new FileInputStream (file);

      response.setContentLength((int) file.length());
      response.setContentType(mimeType);
      // Eviter que le flux HTTP soit stocke dans le cache du navigateur
      response.setHeader("Cache-Control", "max-age=0; private; must-revalidate");
      response.setHeader("Pragma", "private");

      // Lecture du fichier et copie dans la reponse HTTP
      while ((bytesRead = fis.read(tab)) != -1)
         out.write(tab, 0, bytesRead);

      fis.close();
      out.flush();
      out.close();
   }

   public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
   {
      this.doGet(request, response);
   }
}
