Die @MultiPartConfig ist wirklich nur eine Markierungsschnittstelle für den Behälter. Wenn das Servlet initialisiert wird, werden die angegebenen Annotation-Werte mit einem Proxy-Objekt verknüpft. Wenn es sich bei der eingehenden Anfrage um eine Multipart-/Formulardaten handelt, werden die Teile des Uploads der Anforderung zugeordnet, und der Container führt die erforderliche Arbeit basierend auf den Werten aus der Annotation und den Teilen der Anforderung aus. Es gibt keine Möglichkeit für Sie, diesen Prozess abzufangen, da alles innerhalb der Eingeweide des Containers passiert. Es gibt jedoch eine Alternative. Dazu muss ein Dateisystemvorgang ein zweites Mal ausgeführt werden. Da Sie alle Teile haben, können Sie die Datei rekonstruieren und sie an den Ort Ihrer Wahl "erneut hochladen". Es könnte etwas wie die folgende Methode aussehen. Denken Sie daran, obwohl ich diese schnell in einem Servlet meiner eigenen getestet, das Konzept zu zeigen, ist es offensichtlich nicht Code beendet:
@Override
protected void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse)
throws ServletException, IOException {
httpServletResponse.setContentType("text/html");
PrintWriter printWriter = httpServletResponse.getWriter();
InputStream inputStream;
FileOutputStream fileOutputStream;
for (Part part : httpServletRequest.getParts()) {
inputStream = httpServletRequest.getPart(part.getName()).getInputStream();
int i = inputStream.available();
byte[] b = new byte[i];
inputStream.read(b);
String fileName = "";
for (String temp : part.getHeader("content-disposition").split(";")) {
if (temp.trim().startsWith("filename")) {
fileName = temp.substring(temp.indexOf('=') + 1).trim().replace("\"", "");
}
}
String uploadDir = "/temp";
fileOutputStream = new FileOutputStream(uploadDir + "/" + fileName);
fileOutputStream.write(b);
inputStream.close();
fileOutputStream.close();
printWriter.write("Uploaded file " + uploadDir + "/" + fileName + ".");
}
}
getan Wenn Sie @MultiPartConfig verwenden und eine Runtime-Datei Standort müssen dann Sie haben keine andere Möglichkeit als "neu hochzuladen" Die Teile. –