Reputation: 101
I am using Spring Framework's MultipartFile to allow a user to upload a pdf file, and I want to store the file in a directory:
For this I use the method tranferTo () but it still doesn't work!!
@RequestMapping(method = RequestMethod.POST, value = "/upload")
public CV handleFileUpload(@RequestParam("file") MultipartFile file)
throws IOException, SAXException, TikaException {
File convFile = new File( file.getOriginalFilename());
System.out.println(file.getOriginalFilename());
file.transferTo(convFile );
}
How can I add the destination path?
Upvotes: 1
Views: 4416
Reputation: 2856
Store in Catalina which is parent folder to your project folder
String rootPath = System.getProperty("catalina.home");
File dir = new File(rootPath + File.separator + "yourfolderName");
if (!dir.exists())
dir.mkdirs();
// Create the file on server
java.util.Date date= new java.util.Date();
String Path = dir.getAbsolutePath() + File.separator + (new Timestamp(date.getTime())).toString().replace(":", "").toString().replace(".", ".").toString().replace(" ","").toString().replace("-","").toString()+".pdf";
Or Store in specific folder in your project such as folder
@RequestMapping(value="/user/uploadFile", method=RequestMethod.POST)
public ModelAndView handleFileUpload(ModelMap model,@RequestParam(value="file", required = false) MultipartFile file,HttpServletRequest request){
if (!file.isEmpty()) {
//filter for checking file extewnsion
if(file.getContentType().equalsIgnoreCase("image/jpg") || file.getContentType().equalsIgnoreCase("image/jpeg")){
//if file is >2 MB or < 2MB
double size = file.getSize();
double kilobytes = (size / 1024);
double megabytes = (kilobytes / 1024);
if(megabytes<2){
try {
byte[] bytes = file.getBytes();
String filePath = request.getRealPath("/")+"yourFolderName\\ProfileImages\\"+SessionManagement.getUserName()+".jpg";
BufferedOutputStream stream =
new BufferedOutputStream(new FileOutputStream(new File(filePath)));
stream.write(bytes);
stream.close();
//console call
}
else{
model.put("error", "Please select File less than 2 MB");
return new ModelAndView("uploadPhotoTile");
}
}else{
model.put("error", "Please select JPEG File");
return new ModelAndView("uploadPhotoTile");
}
} else {
model.put("error", "Please select File");
return new ModelAndView("uploadPhotoTile");
}
}
Upvotes: 2