Загрузка файла с MVC - PullRequest
0 голосов
/ 13 апреля 2020

Я использую Spring MVC !!!

У меня есть одна форма на моем сайте, эта форма должна получить файл от пользователя сайта, а затем сохранить его в центральной базе данных. Эта форма выглядит примерно так:

<form action="getFile"> 
   <input type = "file" name="file">
</form>

Таким образом, в верхней форме пользователь должен перетащить или поместить файл. И в контроллере ниже я пытаюсь получить файл, и лучше всего было бы, если бы я мог как-то сделать этот тип файла File в java.

@RequestMapping(value = "/valueOfFileWithForm")
public static String getFile(HttpServletRequest req){
  /// and here should happen something like this, as we do with strings or ints...
  File file = req.getParameter("file");
}

1 Ответ

1 голос
/ 13 апреля 2020

вы должны использовать что-то вроде

    @PostMapping(value = "/valueOfFileWithForm")
  public static String getFile(@RequestPart(value = "file") MultipartFile file)

и затем передать параметр "file" методу, подобному этому:

public String saveFile(MultipartFile file) throws FileNotFoundException {

        try {
            List<String> nameAndFormat = getNameAndFormat(
                    Objects.requireNonNull(file.getOriginalFilename()).
                            replace(" ", "-"));
            String name = nameAndFormat.get(0);

            String format = nameAndFormat.get(1);

            if (file.isEmpty()) {
                throw new FileNotFoundException(file.getName());
            }

            if (!Arrays.asList(allowedFormats).contains(nameAndFormat.get(1).toLowerCase())) {
                throw new IOException();
            }

            String directoryName = makeDirectory(
                    Constants.ROOT_USER_DIRECTORY + Constants.ROOT_STORAGE + Constants.IMAGE_DIRECTORY)
                    .getAbsolutePath();

            timeStamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
            String updatedTimeStamp = timeStamp.replaceAll(" ", "-");
            updatedTimeStamp = updatedTimeStamp.replaceAll(":", "-");

            fileName = directoryName + "/" + updatedTimeStamp + "_" + "pic" + "." + format;

            File convertedFile = new java.io.File(fileName);

            if (convertedFile.exists()) {
                convertedFile.mkdirs();
            }

            file.transferTo(convertedFile);
            byte[] bytes = file.getBytes();
            Path path = Paths.get(fileName);
            Files.write(path, bytes);

        } catch (IOException e) {
            logger.error(e.getMessage());

        }

        return fileName;

    }

эта часть кода "Constants.ROOT_USER_DIRECTORY + Constants.ROOT_STORAGE + Constants.IMAGE_DIRECTORY) "укажите каталог для загрузки файла

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...