2017-04-24 2 views
0

ich das gleiche Problem bin immer hier ist mein Codehochgeladene Datei ist nicht immer unter Ressourcen in webapps gespeichert in

@RequestMapping(value = "/admin/productInventory/addProduct", method = RequestMethod.POST) 
    public String addProductInInventory(@ModelAttribute("product") Product product, HttpServletRequest request) { 
     productDao.addProduct(product); 

     MultipartFile productImage = product.getProductImage(); 
     String rootDirectory = request.getSession().getServletContext().getRealPath("/ "); 
     System.out.println("rootDirectory >>>"+rootDirectory); 
     path = Paths.get(rootDirectory + "\\WEB-INF\\resources\\images\\" +product.getProductName()+"_"+product.getProductId()); 

     if(productImage != null && !productImage.isEmpty()) { 
      try{ 
       productImage.transferTo(new File(path.toString())); 
       System.out.println("actual path>>>" +path.toString()); 
      }catch(Exception e){ 
       e.printStackTrace(); 
       throw new RuntimeException("Product image saving faild."); 
      } 
      } 
     return "redirect:/admin/productInventory"; 
    } 

jetzt die Datei auf Pfad gespeichert wird immer >>

C: \ Benutzer \ rajan \ Dokumente \ workspace-sts-3.7.3.RELEASE.metadata.plugins \ org.eclipse.wst.server.core \ tmp0 \ wtpwebapps \ Musikspeicher \ WEB-INF \ resources \ images \

aber hochgeladene Datei wird nicht in webapps/resources/imaged im package explorer in meiner ide angezeigt.

+0

Ich denke, Sie sollten die Bilder an einem isolierten Ort speichern und nicht die Ressourcen Ihrer Web-App in diesem Fall ändern, wenn Sie ein Repository haben Sie unsynchronisiert und es ist keine gute Praxis – cralfaro

+0

hi cralfaro Ihre Aussage "wenn Sie Habe ein Repository, das du unsynchronisierst "Könntest du es bitte ausarbeiten ?? –

+0

Sicher, wenn Sie die Bilder in WEB-INF/Ressourcen speichern, ist es in der Struktur Ihres Projekts, wo Sie auch Bilder, CSS, HTML, ..., wenn Sie diesen Inhalt mit Dateien vom Benutzer hochgeladen, diese Dateien werden nur auf dem Server gespeichert, und wenn Sie den Server migrieren oder in einen anderen Container verschieben, werden Sie feststellen, dass all diese Bilder nicht mit Ihrem lokalen Repository synchronisiert sind, da Sie sie nie festlegen. Das Beste ist, dass Sie Ihren Krieg isoliert halten, und speichern Sie diese Bilder in einem globalen Pfad wie "/ home/rajan/app/images" oder etwas Generisches für jeden Server. – cralfaro

Antwort

3

Es ist wahrscheinlich, weil Sie Ihr Projekt direkt von Eclipse ausführen. Wenn Sie dies tun, ist dies der Ort, an dem sich unser WAR befindet (in Ihrem Arbeitsbereich). Dieser Pfad wird von Eclipse verwendet. In diesem Fall ist C:\Users\rajan\Documents\workspace-sts-3.7.3.RELEASE.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\MusicStore der Kontextbasispfad. Deshalb wird die Datei dort gespeichert. Versuchen Sie Tomcat vom Terminal aus zu starten und Sie werden es am gewünschten Ort bekommen.

+0

Hallo Durlabh danke, es hat funktioniert, jetzt gibt es eine Möglichkeit, dieses Ding in STS oder Eclipse zu beheben, wie ich einen Kurs in Udemy folgen, der Intellij Idea verwendet und den obigen Code implementiert, jedoch nach der Codierung sagt, das Ausgabeverzeichnis zu ändern in Projektstruktur> Artefakte> Ausgabeverzeichnis (dh das kommt unter Java Buildpfad> Quelle im Falle der Finsternis nach meinem Verständnis) aber selbst nach dieser Änderung bekomme ich nicht die gewünschte Ausgabe. –

Verwandte Themen