Page tree
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

1. Uploading images, video clips and other files

upload
@RequestMapping(value = "/uploadFile", method = RequestMethod.POST)
@ResponseBody
public Map<String, Object> uploadFile(@RequestParam("file") MultipartFile file) throws IOException {
	static String ROOT_PATH = "C:\\workspace\\synapEditorsample\\out\\artifacts\\synapEditorsample_war_exploded";
	static String IMAGE_UPLOAD_DIR = "\\uploads";
    String fileName = file.getOriginalFilename();
    String ext = fileName.substring(fileName.lastIndexOf('.'));
    String saveFileName = UUID.randomUUID().toString() + ext;

    File uploadDir = new File(ROOT_PATH + IMAGE_UPLOAD_DIR);
    if(!uploadDir.exists()) {
        uploadDir.mkdirs();
    }

    byte[] bytes = file.getBytes();
    Path path = Paths.get(ROOT_PATH + IMAGE_UPLOAD_DIR + File.separator + saveFileName);
    Files.write(path, bytes);

    Map<String, Object> map = new HashMap<>();
    map.put("uploadPath", "uploads/" + saveFileName);

    return map;
}

2. Importing MS Word / LibreOffice documents

import
@RequestMapping(value = "/importDoc", method = RequestMethod.POST)
@ResponseBody
public Map<String, Object> importDoc(@RequestParam("file") MultipartFile importFile) throws IOException {
	static String ROOT_PATH = "C:\\workspace\\synapEditorsample\\out\\artifacts\\synapEditorsample_war_exploded";
	static String DOC_UPLOAD_DIR = "\\uploads\\docs";
	static String WORKS_DIR = "\\uploads\\tmp";
    String fileName = importFile.getOriginalFilename();

    File uploadDir = new File(DOC_UPLOAD_DIR);
    if(!uploadDir.exists()) {
        uploadDir.mkdirs();
    }

    byte[] bytes = new byte[0];
    try {
        bytes = importFile.getBytes();
    } catch (IOException e) {
        e.printStackTrace();
    }
    Path path = Paths.get(DOC_UPLOAD_DIR + "\\" + fileName);

    try {
        Files.write(path, bytes);
    } catch (IOException e) {
        e.printStackTrace();
    }

    File worksDir = new File(ROOT_PATH + WORKS_DIR);
    if(!worksDir.exists()) {
        worksDir.mkdirs();
    }

    executeConverter(DOC_UPLOAD_DIR + File.separator + fileName, ROOT_PATH + WORKS_DIR);
    Integer[] serializedData = serializePbData(WORKS_DIR + "\\document.word.pb");

    Map<String, Object> map = new HashMap<>();
    map.put("serializedData", serializedData);
    map.put("importPath", WORKS_DIR);

    return map;
}
 
public static void executeConverter(String inputFilePath, String outputFilePath) {
    String SEDOC_CONVERT_DIR = "C:\\sedocConverter\\sedocConverter.exe";
    String FONT_DIR = "C:\\sedocConverter\\sedocConverter\\fonts";
    String TEMP_DIR = "C:\\sedocConverter\\sedocConverter\\tmp";

    File tempDir = new File(TEMP_DIR);
    if(!tempDir.exists()) {
        tempDir.mkdirs();
    }

    File fontDir = new File(FONT_DIR);
    if(!fontDir.exists()) {
        fontDir.mkdirs();
    }

    Runtime rt = Runtime.getRuntime();
    Process process;

    try {
        process = rt.exec(new String[]{SEDOC_CONVERT_DIR, "-f", FONT_DIR, inputFilePath, outputFilePath, TEMP_DIR});
        process.waitFor();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

public Integer[] serializePbData(String pbFilePath) throws IOException {
    List<Integer> serializedData = new ArrayList<Integer>();
    FileInputStream fis = new FileInputStream(pbFilePath);

    Integer[] data = null;

    fis.skip(16);

    InflaterInputStream ifis = new InflaterInputStream(fis);

    byte[] buffer = new byte[1024];

    int len = -1;
    while ((len = ifis.read(buffer)) != -1) {
        for (int i = 0; i < len; i++) {
            serializedData.add(buffer[i] & 0xFF);
        }
    }

    data = serializedData.toArray(new Integer[serializedData.size()]);

    ifis.close();
    fis.close();

    return data;
}
  • No labels