[Servlet] Upload de fichier utilisant FileUpload de Apache
Bonjour à tous voici le code de ma servlet
j'utilise NetBeans 5.5.1
Code:
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
| import java.io.*;
import java.util.Iterator;
import java.util.List;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
/**
*
* @author sikro
* @version
*/
public class NewServlet extends HttpServlet {
/** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException, FileUploadException, Exception {
// Check that we have a file upload request
if (ServletFileUpload.isMultipartContent(request)){
// Create a factory for disk-based file items
FileItemFactory factory = new DiskFileItemFactory(4096,new File("maevatmp"));
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
// Parse the request
List /* FileItem */ items = upload.parseRequest(request);
// Process the uploaded items
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
// if (item.isFormField()) {
// processFormField(item);
// } else {
// processUploadedFile(item);
// }
// Item information
// if (!item.isFormField()) {
String fieldName = item.getFieldName();
String fileName = item.getName();
String contentType = item.getContentType();
boolean isInMemory = item.isInMemory();
long sizeInBytes = item.getSize();
if(!new File("maevatmp").exists()) new File("maevatmp").mkdirs();
File uploadedFile = new File("maevatmp/"+fileName);
item.write(uploadedFile);
// }
}
}
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/** Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
processRequest(request, response);
} catch (ServletException ex) {
ex.printStackTrace();
} catch (FileUploadException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
}
/** Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
*/
// protected void doPost(HttpServletRequest request, HttpServletResponse response)
// throws ServletException, IOException {
// processRequest(request, response);
// }
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
try {
processRequest(req,res);
} catch (ServletException ex) {
ex.printStackTrace();
} catch (FileUploadException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
}
/** Returns a short description of the servlet.
*/
public String getServletInfo() {
return "Short description";
}
// </editor-fold>
} |
j'ai récupéré ce code sur le site de apache :
http://commons.apache.org/fileupload/using.html
ma question est de savoir comment je peux tester une telle servlet..
j'aimerai intégrer des fonctions à une application permettant d'uploader des fichiers vers un serveur de fichier.
mes connaissances en servlet sont très très très basiques...
Il faut par ailleurs que je puisse authentifier l'utilisateur en Basic afin que la servlet puisse s'exécuter
merci d'avance