1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169
|
@WebServlet(name = "UploadFile", urlPatterns = "/UploadFile")
@Multipart
public class UploadFile extends HttpServlet {
private static final long serialVersionUID = 1L;
// ATTRIBUTES DE LA REQUETE
private static final String ATTR_FILE = "file";
private static final String ATTR_UPLOADS_DIRECTORY = "uploads-directory";
private static final String VIEW1 = "/WEB-INF/web/upload.jsp";
private static final String VIEW2 = "/WEB-INF/web/Ok.jsp";
private static final String VIEW3 = "/WEB-INF/web/NonOk.jsp";
private String uploadsdirectory = new String();
// OBJET POUR LE CONTROL DE LA TAILLE DU FICHIER
private static final int THRESHOLD_SIZE = 1024 * 1024 * 30; // 30MB
private static final int MAX_FILE_SIZE = 1024 * 1024 * 500; // 500MB
private static final int MAX_REQUEST_SIZE = 1024 * 1024 * 500; // 500MB
private AbstractDAO<Fichier> fichierDao;
// POINT D'ENTRE AU SERVLET / LIKE A CONSTRUCTOR
public void init() throws ServletException {
// RECUPERATION DU CHEMAIN (REPERTOIRE) POUR LES FICHIERS TEMPORAIRES
this.uploadsdirectory = this.getServletContext().getInitParameter(
ATTR_UPLOADS_DIRECTORY);
// VERIFICATION DE L EXISTENCE DU REPERTOIRE UPLOADS
this.directoryCreator(this.uploadsdirectory);
this.fichierDao = FactoryDAO.getFichierDAO();
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
this.getServletContext().getRequestDispatcher(VIEW1)
.forward(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
if (new File(this.uploadsdirectory).exists()) {
// OBJET METIER SET POUR UPLOADER UN FICHIER
ServletFileUpload upload = null;
AbstractFileUpload uploader = new PDFFileUpload(this.uploadsdirectory);
AbstractFileUpload uploader2 = new UploadAnyFile(this.uploadsdirectory);
String nomFichier = (String) request.getParameter("Nom");
String auteurFichier = (String) request.getParameter("Auteur");
String descriptionFichier = (String) request.getParameter("Description");
String typeFichier = (String) request.getParameter("Type");
System.out.println(nomFichier + auteurFichier+ descriptionFichier + typeFichier);
if (ServletFileUpload.isMultipartContent(request)) {
try
{
// PRETRATITEMENT POUR CONTROLER LA TAILLER DU FICHIER
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(THRESHOLD_SIZE);
factory.setRepository(new File(System.getProperty("java.io.tmpdir")));
upload = new ServletFileUpload(factory);
upload.setFileSizeMax(MAX_FILE_SIZE);
upload.setSizeMax(MAX_REQUEST_SIZE);
// OBTIEN LISTE DE ITEMS(INPUTs) DU FORMULAIRE ENVOYES PAR
// POST
List<FileItem> itemsSet = upload.parseRequest(request);
int itemsSetSize = itemsSet.size();
for (int i = 0; i < itemsSetSize; i++) {
if (!itemsSet.get(i).isFormField()) {
uploader.upload(itemsSet.get(i)); // OBJET METIER
// ENCHARGER
// D'UPLOADER LE
// FICHIER
if (!uploader.getErrors().isEmpty()) {
uploader.setErrors(null, null);
uploader2.upload(itemsSet.get(i));
}
}
}
// AJOUT D'ATTRIBUTES A LA REQUETE
request.setAttribute(ATTR_FILE, uploader);
// REDIRECTION VERS LA VUE CORRESPONDANTE
if (!uploader2.getErrors().isEmpty()) {
this.getServletContext().getRequestDispatcher(VIEW3)
.forward(request, response);
} else {
this.getServletContext().getRequestDispatcher(VIEW2)
.forward(request, response);
}
// CREATION DUN OBJET FICHIER A PARTIR DES METADONNEES
/*
* Fichier fichier=new Fichier();
*
* fichier.setNom(nomFichier);
* fichier.setAuteur(auteurFichier);
* fichier.setDescription(descriptionFichier);
* fichier.setType(typeFichier);
*
* fichier.setId(uploader.getFilecode());
* fichier.setSize(uploader.getFilesize());
* fichier.setFormat(uploader.getFileformat());
*
*
* fichier.setId(uploader2.getFilecode());
* fichier.setSize(uploader2.getFilesize());
* fichier.setFormat(uploader2.getFileformat());
*
*
* System.out.println(fichier.toString());
* this.fichierDao.create(fichier);
*/
}
catch (Exception e) {
// ON PDFUPLOADER ERROR LIST
uploader.setErrors("size","The selected file exceeds the size allowed by the server");
// ON SERVER
System.out.println(this.getClass().getName()
+ ".multipart():\n" + e.getMessage());
}
}
}
}
/** METHODE QUI GERE LA CREATION DE REPERTOIRES **/
private void directoryCreator(String directoryname) {
if (!new File(directoryname).exists()) {
try {
// CREATION DU REPERTOIRE
new File(directoryname).mkdir();
} catch (Exception e) {
// REPPORTINF ERROR ON SERVER
System.out.println(this.getClass().getName()
+ ".directoryCreator():\n" + e.getMessage());
}
}
}
} |
Partager