Browse Source

si visuel absent, essaye de trouver dans l'archive

Rajah 10 months ago
parent
commit
ebe8ba3482
1 changed files with 69 additions and 1 deletions
  1. 69 1
      src/fr/triplea/vote/servlet/Production.java

+ 69 - 1
src/fr/triplea/vote/servlet/Production.java

@@ -12,6 +12,8 @@ import java.io.IOException;
 import java.sql.Types;
 import java.util.Calendar;
 import java.util.Hashtable;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
 
 import javax.imageio.ImageIO;
 import javax.servlet.RequestDispatcher;
@@ -730,7 +732,73 @@ public final class Production extends HttpServlet
 				archive.setDonnees(new byte[]{});
 			}
 
-			// TODO : si pas de visuel, essayer de le trouver dans l'archive
+			// si pas de visuel, essaye de trouver l'image dans l'archive
+			if (visuel.getTaille()== 0) 
+			{
+				byte[] bin = archive.getDonnees();
+			
+				if (bin.length > 0)
+				{
+					String nomArchive = archive.getNom().toUpperCase();
+					
+					if (nomArchive.endsWith(".ZIP")) 
+					{									
+						ZipInputStream zis = new ZipInputStream(new ByteArrayInputStream(bin));									
+						ZipEntry ze = null;
+						String nomZipEntry = null;
+						byte[] dataZipEntry = null;
+						
+						while ((ze = zis.getNextEntry()) != null) 
+						{
+							nomZipEntry = ze.getName().toUpperCase();
+							
+							if (nomZipEntry.endsWith(".PNG"))
+							{
+								dataZipEntry = new byte[(int)ze.getSize()];
+								
+								zis.read(dataZipEntry, 0, dataZipEntry.length);
+								
+								visuel = new MemoireFichier(ze.getName(), "image/png", dataZipEntry);
+								
+								break;
+							}
+							else if (nomZipEntry.endsWith(".JPG") || nomZipEntry.endsWith(".JPEG"))
+							{
+								dataZipEntry = new byte[(int)ze.getSize()];
+								
+								zis.read(dataZipEntry, 0, dataZipEntry.length);
+
+								visuel = new MemoireFichier(ze.getName(), "image/jpg", dataZipEntry);
+								
+								break;
+							}
+							else if (nomZipEntry.endsWith(".GIF"))
+							{
+								dataZipEntry = new byte[(int)ze.getSize()];
+								
+								zis.read(dataZipEntry, 0, dataZipEntry.length);
+
+								visuel = new MemoireFichier(ze.getName(), "image/gif", dataZipEntry);
+								
+								break;
+							}
+						}
+						zis.close();
+					}
+					else if (nomArchive.endsWith(".PNG"))
+					{
+						visuel = new MemoireFichier(archive.getNom(), "image/png", bin);
+					}
+					else if (nomArchive.endsWith(".JPG") || nomArchive.endsWith(".JPEG"))
+					{
+						visuel = new MemoireFichier(archive.getNom(), "image/jpg", bin);
+					}
+					else if (nomArchive.endsWith(".GIF"))
+					{
+						visuel = new MemoireFichier(archive.getNom(), "image/gif", bin);
+					}
+				}
+			}
 			
 			if (visuel.getTaille() > 0) 
 			{