2016-07-08 8 views
2

ich eine Bilddatei und die Schaffung von File Objekt mit diesem BildWie konvertiert Bild mehrt Datei im Frühjahr

File file = new File("E://Shared Data/Images/xyz.jpg");

Die obige Linie ist die Schaffung eines file Objekt mit einer gewissen Größe wie 440272 haben, muss ich konvertieren die oben image file in multipart file für das ich

tat
DiskFileItem fileItem = new DiskFileItem("file", "image/png", false, file.getName(), 
            (int) file.length(), file.getParentFile()); 
          fileItem.getOutputStream(); 
          MultipartFile multipartFile = new CommonsMultipartFile(fileItem); 
          adminAssetUploadController.upload(request, multipartFile, "product", null); 

das Problem ist nach der Konvertierung erhalte ich size=0 anstatt etwas size wie 440272 zu bekommen. Wenn ich size für die image bekomme, so dass ich in einige Orte speichern kann, indem ich es an upload Methode übertrage.

unten ist die Upload-Methode

public ResponseEntity<Map<String, Object>> upload(HttpServletRequest request, 
      @RequestParam("file") MultipartFile file, @PathVariable(value = "sectionKey") String sectionKey, 
      @PathVariable(value = "id") String id) throws IOException { 
     Map<String, Object> responseMap = new HashMap<String, Object>(); 

     Map<String, String> properties = new HashMap<String, String>(); 
     properties.put("entityType", sectionKey); 
     properties.put("entityId", id); 

     StaticAsset staticAsset = staticAssetService.createStaticAssetFromFile(file, properties); 
     staticAssetStorageService.createStaticAssetStorageFromFile(file, staticAsset); 
     ........ 
     ....... 

} 

kann mir jemand helfen, warum ich zero size bekommen werde, nachdem sie in multipart file Umwandlung ist mein Ansatz richtig ist image file zu multipart file konvertieren? oder muss ich irgendeinen anderen approach dafür folgen?

Antwort

2

würde ich vorschlagen, um das Bild zu konvertieren, indem Sie diesen Code verwenden

FileInputStream input = new FileInputStream(fileItem); 
MultipartFile multipartFile = new MockMultipartFile("fileItem", 
      fileItem.getName(), "image/png", IOUtils.toByteArray(input)); 

Wenn Sie CommonsMultipartFile verwenden möchten, ich denke, Sie sollten in Ihre pom-Datei haben die commons-Fileupload

<dependency> 
    <groupId>commons-fileupload</groupId> 
    <artifactId>commons-fileupload</artifactId> 
    <version>1.3</version> 
</dependency> 

Die Dokumentation von CommonsMultipartFile besagt, dass

Hinweis: ab Klasse 2.0 erfordert diese Klasse Commons F ileUpload 1.1 oder höher. Die Implementierung verwendet kein veraltetes FileUpload 1.0 API mehr, um kompatibel mit zukünftigen Commons FileUpload Releases zu sein. http://docs.spring.io/spring-framework/docs/2.0.8/api/org/springframework/web/multipart/commons/CommonsMultipartFile.html

Lassen Sie mich wissen, ob dies für Sie

arbeitete
+0

'MockMultipartFile' ja, es war Ihnen sehr danken. –

+0

Schön, dass es für Sie funktioniert hat –