Certaines librairies de composants JSF comme Primefaces proposent des solutions faciles à implémenter pour réaliser vos uploads. En revanche, mettre en oeuvre cette opération soi-même peut sembler plus délicat. Mais nous allons voir que, comme souvent en
Certaines librairies de composants JSF comme Primefaces proposent des solutions faciles à implémenter pour réaliser vos uploads. En revanche, mettre en oeuvre cette opération soi-même peut sembler plus délicat. Mais nous allons voir que, comme souvent en JavaLangage de développement très populaire !, le standard JEEJava Entreprise Edition définit déjà tous les outils nécessaires.
Tout d’abord, il faut déclarer une Servlet et l’annoter avec @MultipartConfig. Cette annotation va permettre de prendre en charge les formulaires encodés en multipart.
@WebServlet(name = "UploadServlet", urlPatterns = { "/single-upload" })
@MultipartConfig
public class UploadServlet extends HttpServlet {
Ensuite, la classe javax.servlet.http.Part permet de récupérer un flux à parti duquel vous pouvez enregistrer votre fichier. L’exemple type :
final Collection<
part> lParts = pRequest.getParts();
final PrintWriter lWriter = pResponse.getWriter();
String lFileName = null;
for (Part lFilePart : lParts) {
lFileName = getFileName(lFilePart);
// Try-with-resources statement
try (OutputStream lOutputStream = new FileOutputStream(new File("VOTRE_PATH_UPLOAD" + lFileName));
InputStream lInputStream = lFilePart.getInputStream()) {
int lRead = 0;
final byte[] lBytes = new byte[1024];
while ((lRead = lInputStream.read(lBytes)) != -1) {
lOutputStream.write(lBytes, 0, lRead);
}
lWriter.println("File has been successfully uploaded.");
} catch (FileNotFoundException e) {
lWriter.println("An error occurred while trying to upload file.");
}
}
if (lWriter != null) {
lWriter.close();
}
<
/part>
Ici, je récupère une Collection contenant l’ensemble des Parts de mon HttpServletRequest, et j’itère dessus pour gérer les fichiers uploadés. Après, il ne s’agit que de lecture et écriture de fichiers : on récupère un flux entrant depuis le Part, un flux sortant vers le fichier dans lequel on souhaite écrire. Le PrintWriter est utilisé pour écrire la réponse HTTP.
Remarques :
private String getFileName(final Part pPart) {
for (String lContent : pPart.getHeader("content-disposition")
.split(";")) {
if (lContent.trim().startsWith("filename")) {
return lContent.substring(lContent.indexOf(’=’) + 1).trim().replace("\"", "");
}
}
return null;
}
Vous n'êtes plus satisfait(e) de votre prestataire informatique actuel ? Vous avez décidé de passer à autre chose, mais vous hésitez : par où commencer, quels pièges éviter, comment assurer une transition en douceur ? Pas de panique : cet article vous guide étape par étape pour réussir ce changement sans heurts.
Et si le meilleur moyen de reprendre le contrôle sur son système d'information, c'était de revenir à l'essentiel ? Chez AXOPEN, on lance un petit slogan en 2025 – un brin provocateur, mais sincère : "Kubernetes is all you need".
Vous vous demandez si toutes vos images doivent obligatoirement être au format 3840 x 2160 ? Est-il nécessaire de charger celles qui ne sont pas visibles à l'écran ? Dans cet article, nous aborderons ces questions et explorerons des solutions d'optimisation, notamment grâce à la technique du lazy loading.