package eu.eudat.controllers; import eu.eudat.logic.managers.FileManager; import eu.eudat.models.data.files.ContentFile; import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.logic.services.ApiContext; import eu.eudat.types.ApiMessageCode; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.Resource; import org.springframework.core.io.UrlResource; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.util.List; /** * Created by ikalyvas on 3/15/2018. */ @RestController @CrossOrigin @RequestMapping(value = {"/api/files"}) public class FileController extends BaseController { @Autowired public FileController(ApiContext apiContext) { super(apiContext); } @RequestMapping(method = RequestMethod.POST, value = {"/upload"}) public ResponseEntity>> handleFileUpload(@RequestParam("file") MultipartFile[] files) { try { return ResponseEntity.status(HttpStatus.OK).body( new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(FileManager.saveTempFile(files, getApiContext().getOperationsContext().getFileStorageService()))); } catch (IOException e) { e.printStackTrace(); return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem>().status(ApiMessageCode.ERROR_MESSAGE).message(e.getMessage())); } } @RequestMapping(method = RequestMethod.GET, value = {"/{id}"}) public ResponseEntity handleFileUpload(@PathVariable(name = "id") String id, @RequestParam(name = "type") String type, @RequestParam(name = "location", required = false, defaultValue = "final") String location) { try { Resource resource = FileManager.getFile(id, type, getApiContext().getOperationsContext().getFileStorageService(), location); if (!resource.exists()) resource = new UrlResource(FileController.class.getClassLoader().getResource("images/default.png")); return ResponseEntity.ok() .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + resource.getFilename() + "." + type + "\"") .body(resource); } catch (IOException e) { e.printStackTrace(); return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null); } } }