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
| @WebServlet(urlPatterns={"/upload"})
@MultipartConfig(location="C:\\Users\\sangdou\\Desktop\\repupload", maxFileSize=10485760L) // 10Mo.
public class Upload extends HttpServlet {
// parametres de lupload
private static final int TAILLE_BUFFER=10240;
private static final String TYPE_CONTENU="content-disposition";
private static final String NOM_TYPE_CONTENU="filename";
private static final boolean MODE_MULTIPART=true;
protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException
{
// parcourir chaque paramètre reçu
for (Part p: request.getParts())
{
String typeContenu=p.getContentType();
if(typeContenu!=null)
{
// upload
Part part=this.uploadFichier(p);
request.setAttribute("part", part);
}
}
// retour sur la page dupload
request.getRequestDispatcher("/upload.jsp").forward(request,
response);
}
// affichage de la page de chargement
protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException
{
request.getRequestDispatcher("/upload.jsp").forward(request, response);
}
// upload du fichier
private Part uploadFichier(Part part) throws IOException
{
// retrouver le nom du fichier uploadé
String filename=this.getNomFichier(part);
// mise en forme du nom
String prefix=filename;
String suffix="";
if (filename.contains(".")) {
prefix=filename.substring(0, filename.lastIndexOf('.'));
suffix=filename.substring(filename.lastIndexOf('.'));
}
// écrire le fichier
File file=File.createTempFile(prefix + "_", suffix, new File(this.getClass().getAnnotation(MultipartConfig.class).location()));
// copie simple
if (MODE_MULTIPART) {
part.write(file.getName());
}
// copie streaming
else
{
InputStream input = null;
OutputStream output = null;
try {
input = new BufferedInputStream(part.getInputStream(), TAILLE_BUFFER);
output = new BufferedOutputStream(new FileOutputStream(file), TAILLE_BUFFER);
byte[] buffer = new byte[TAILLE_BUFFER];
for (int length = 0; ((length = input.read(buffer)) > 0);)
{
output.write(buffer, 0, length);
} |
Partager