/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package mx.edu.um.mateo.general.utils;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import mx.edu.um.mateo.general.web.BaseController;
import mx.edu.um.mateo.inscripciones.model.FileUploadForm;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.multipart.MultipartFile;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.IOUtils; // Apache commons IO
import org.springframework.web.servlet.ModelAndView;
//import org.springframework.web.servlet.mvc.Controller;
/**
*
* @author develop
*/
@Controller
@RequestMapping("/inscripciones/uploadFiles")
public class FileUploadController extends BaseController {
// private String saveDirectory = "D:/Test/Upload/";
@RequestMapping(value = "/show", method = RequestMethod.GET)
public String displayForm() {
return "/inscripciones/uploadFiles/file_upload_form";
}
@RequestMapping(value = "/save", method = RequestMethod.POST)
public String save(HttpServletRequest request,
@ModelAttribute("uploadForm") FileUploadForm uploadForm,
Model map) throws IOException {
List<MultipartFile> files = uploadForm.getFiles();
List<String> fileNames = new ArrayList<String>();
if (null != files && files.size() > 0) {
for (MultipartFile multipartFile : files) {
String fileName = multipartFile.getOriginalFilename();
fileNames.add(fileName);
//Handle file content - multipartFile.getInputStream()
String uploadDir = "/home/develop/" + request.getRemoteUser() + "/" + multipartFile.getOriginalFilename();
File dirPath = new File(uploadDir);
if (!dirPath.exists()) {
dirPath.mkdirs();
}
multipartFile.transferTo(new File("/home/develop/" + request.getRemoteUser() + "/" + multipartFile.getOriginalFilename()));
log.debug(fileName);
log.debug("/home/develop/" + request.getRemoteUser() + "/" + multipartFile.getOriginalFilename());
if (multipartFile.getOriginalFilename().contains(".pdf")) {
map.addAttribute("pathFilePdf", "/home/develop/" + request.getRemoteUser() + "/" + multipartFile.getOriginalFilename());
} else {
map.addAttribute("pathFileXml", "/home/develop/" + request.getRemoteUser() + "/" + multipartFile.getOriginalFilename());
}
}
}
map.addAttribute("files", fileNames);
return "/inscripciones/uploadFiles/file_upload_success";
}
@RequestMapping(value = "/descargarPdf", method = RequestMethod.GET)
public ModelAndView handleRequestPDF(HttpServletRequest request,
HttpServletResponse response) throws Exception {
try {
// Suponemos que es un zip lo que se quiere descargar el usuario.
// Aqui se hace a piñón fijo, pero podría obtenerse el fichero
// pedido por el usuario a partir de algún parámetro del request
// o de la URL con la que nos han llamado.
String nombreFichero = "el_camino_a_cristo.pdf";
String unPath = "/home/develop/sam/";
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "attachment; filename=\""
+ nombreFichero + "\"");
InputStream is = new FileInputStream(unPath + nombreFichero);
IOUtils.copy(is, response.getOutputStream());
response.flushBuffer();
} catch (IOException ex) {
// Sacar log de error.
throw ex;
}
return null;
}
@RequestMapping(value = "/descargarXML", method = RequestMethod.GET)
public ModelAndView handleRequestXML(HttpServletRequest request,
HttpServletResponse response) throws Exception {
try {
// Suponemos que es un zip lo que se quiere descargar el usuario.
// Aqui se hace a piñón fijo, pero podría obtenerse el fichero
// pedido por el usuario a partir de algún parámetro del request
// o de la URL con la que nos han llamado.
String nombreFichero = "build.xml";
String unPath = "/home/develop/sam/";
response.setContentType("application/xml");
response.setHeader("Content-Disposition", "attachment; filename=\""
+ nombreFichero + "\"");
InputStream is = new FileInputStream(unPath + nombreFichero);
IOUtils.copy(is, response.getOutputStream());
response.flushBuffer();
} catch (IOException ex) {
// Sacar log de error.
throw ex;
}
return null;
}
}