Как удалить stati c путь загруженного файла - PullRequest
0 голосов
/ 12 июля 2020

У меня есть форма, в которой пользователь загружает файл, и при следующем btn я хочу отправить динамический c путь к файлу, который хранится в папке temp

File userphotoFile=PaperlessFlowUtil.storeFileTemp(accphoto.getInputStream(), accphoto.getOriginalFilename(), null);

Ниже приведен код для хранения в папке Temp.

public static File storeFileTemp(InputStream inputStream, String fileName,String userId) throws IOException, ValueNotFoundException {
            File docFile=null;
    try {

        String tempPath ="";
        SimpleDateFormat sdfTS=new SimpleDateFormat("ddMMYYYYhhmmssSSSSSS");
            String ts=sdfTS.format(new Date());
        
            tempPath=ApplicationResourceUtil.getPropertyValue("video.base.file.path.temp2");
            tempPath=tempPath+ts+"\\";
            File tempFolder = new File(tempPath);
            if (!tempFolder.exists()) {
                tempFolder.mkdirs();
            }   
        

         docFile = new File(tempPath + fileName);

        OutputStream outputStream = new FileOutputStream(docFile);
        int read = 0;
        byte[] bytes = new byte[1024];

        while ((read = inputStream.read(bytes)) != -1) {
            outputStream.write(bytes, 0, read);
        }
        if (inputStream != null) {
            try {
                inputStream.close();
            } catch (IOException e) {
                LOGGER.error("Exception while closing stream", e);
            }
        }
        if (outputStream != null) {
            try {
                // outputStream.flush();
                outputStream.close();
            } catch (IOException e) {
                LOGGER.error("Exception while closing stream", e);
            }
        }
        
        return docFile;
    } catch (Exception e) {
        LOGGER.error("EXCEPTION............",e);
            return null;
    }

    }       
}

Он возвращает:

D:\ABCUploads\Temp2\12072020092459000753\admin-Agreement.pdf

Я хочу заменить путь stati c и хочу только путь динамического c. Например, Я хочу удалить D:\ABCUploads\Temp2 и просто хочу \12072020092459000753\admin-Agreement.pdf

Я хочу отправить этот динамический c путь к другому сервису для загрузки

Ответы [ 2 ]

0 голосов
/ 12 июля 2020

Это небольшой обходной путь, но вы можете использовать метод relativize () для Path

Path path = Paths.get("/home/user");
Path passedPath = Paths.get("/home/user/IdeaProjects/SOF/start.txt");
// call relativize()
Path relativize = path.relativize(passedPath);

// output: Relative Path: IdeaProjects/SOF/start.txt
System.out.println("Relative Path: " + relativize);

и вы можете получить объект Path с помощью file.toPath ()

0 голосов
/ 12 июля 2020

Предполагая, что вы получаете pathName или AbsolutePathName для возвращенного docFile. Путь Stati c кажется свойством

String tempPath = ApplicationResourceUtil.getPropertyValue ("video.base.file.path.temp2");

Замените путь к docFile на String .replaceAll (tempath, "");

...