26
Июл
2017

Spring MVC Как в контроллере вызвать класс и вернуть данные?

Есть контроллер, который принимает файлы на сервере.

@Controller
public class FileController {

    private static final Logger logger = LoggerFactory.getLogger(FileController.class);
    public static File uploadedFile;


    @RequestMapping(value = "/upload", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON, produces = "application/json; charset=UTF-8")
    @ResponseBody
    public String uploadFile(@RequestParam("file") MultipartFile file) { // имена параметров (тут - "file") - из формы JSP.

        String name = null;

        if (!file.isEmpty()) {
            try {
                byte[] bytes = file.getBytes();

                name = file.getOriginalFilename();
                String rootPath = "C:\\path\\";
                File dir = new File(rootPath + File.separator + "loadFiles");

                if (!dir.exists()) {
                    dir.mkdirs();
                }

                final File uploadedFile = new File(dir.getAbsolutePath() + File.separator + name);

                BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(uploadedFile));
                stream.write(bytes);
                stream.flush();
                stream.close();

                logger.info("uploaded: " + uploadedFile.getAbsolutePath());

                return "You successfully uploaded file=" + name;

            } catch (Exception e) {
                return "You failed to upload " + name + " => " + e.getMessage();
            }
        } else {
            return "You failed to upload " + name + " because the file was empty.";
        }
    }
}

Есть класс, который обрабатывает файлы тессерактом.

public class Img2String {
public static void tesslib (String[] args) {
    File imageFile = new File();
    Tesseract instance = Tesseract.getInstance();
    instance = new Tesseract();
    instance.setDatapath(); 
    instance.setLanguage("cbl");

    try {

        String result = instance.doOCR(imageFile);
        String A = new String(result);
        String parts[] = A.split(" ");
        final String serial = parts[0]; 
        final String number = parts[1]; 
        System.out.println(serial+ " " + number);

    } catch (TesseractException e) {
        System.err.println(e.getMessage());
    }
}

}

Как в контроллере вызвать этот класс и сразу вернуть данные после обработки?

Источник: https://ru.stackoverflow.com/questions/698019/spring-mvc-%D0%9A%D0%B0%D0%BA-%D0%B2-%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80%D0%B5-%D0%B2%D1%8B%D0%B7%D0%B2%D0%B0%D1%82%D1%8C-%D0%BA%D0%BB%D0%B0%D1%81%D1%81-%D0%B8-%D0%B2%D0%B5%D1%80%D0%BD%D1%83%D1%82%D1%8C-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5

Share

Тебе может это понравится...