Я хочу, чтобы пользователь загружал новый файл шаблона каждый раз, когда он входил в систему, поэтому я думаю о настройке определяемого пользователем атрибута для файла, который он будет хранить в сеансе, и отображать сообщение об ошибке, если он попытается для загрузки этого файла в любой последующий сеанс.InputStream не сохраняет атрибуты UserDefinedFileAttributeView
Для атрибута, определяемого пользователем, я беру временную метку. Но он теряет атрибуты, как только я конвертирую файл во входной поток, для загрузки пользователем.
EDIT: Я ожидаю, что файл, который пользователь получит, а затем загрузит обратно в том же сеансе, чтобы сохранить временную метку, которую я сохранил в пользовательском атрибуте «user.timestamp». Но файл, который доходит до пользователя, не имеет никакого специального атрибута.
File templateFile = new File(context.getRealPath("resources") + "/downloads/template.xlsx");
Path filePath = Paths.get(templateFile.getAbsolutePath());
UserDefinedFileAttributeView view = Files
.getFileAttributeView(filePath, UserDefinedFileAttributeView.class);
view.write("user.timestamp",
Charset.defaultCharset().encode(timestamp.toString()));
InputStream fileStream = new FileInputStream(templateFile);
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader("Content-Disposition", "attachment; filename=Template.xlsx");
IOUtils.copy(fileStream, response.getOutputStream());
response.flushBuffer();
Я не уверен, что вы имеете в виду, но «он теряет атрибут ...». Не могли бы вы изменить свой вопрос и добавить описание: 1. то, что вы ожидаете, 2. что на самом деле происходит. –