2016-09-01 1 views
-1

Я пытаюсь прочитать файл Excel &, загружая его данные в базу данных с помощью Spring4 + POI.Как получить полный путь к файлу для его чтения и сохранения его данных в базе данных?

Flow для этой функциональности:

  1. JSP (выберите файл первенствует)
  2. Получить этот файл на контроллер (с указанием полного пути)
  3. Pass для обслуживания для извлечения данных.

Проблема :: Я получаю только имя файла на контроллере, но мне нужен полный путь к этому файлу.

Например: я получаю Book.xls в контроллере, но я хочу, чтобы D:\Book.xls в контроллере, чтобы прочитать его данные.

Мне нужно передать этот FULLPATH к ->

FileInputStream file = new FileInputStream(new File("D:\\Book.xls")); 

Из-за "Book.xls" это дает мне Исключение: Исключение: Book.xls (Система не может найти указанный файл)

JSP код:

<form ... enctype="multipart/form-data"> 
<input name="file" type="file" /> 

пожалуйста, вы можете помочь мне получить путь выбранного файла.

ответ

0

По соображениям безопасности не разрешается загружать файл с его полным путем (структура каталогов клиента)

Вместо того, что вы можете сделать это,

  1. Загрузить файл (вы что, уже uplaoded)
  2. Хранить его в стороне сервера местоположения
  3. Читайте его оттуда

В случае необходимости я дам код для этого, но сначала попробуйте это

Вы можете использовать Apache Commons-Ио CopyFile API для этого ..

благодаря

Update: - Мой рабочий код

for (MultipartFile multipartFile : files) { 
     System.out.println(multipartFile.getOriginalFilename()+"  "+multipartFile.getContentType()+" "+multipartFile.getName()); 
     try { 
       multipartFile.transferTo(new File(filePathToSave+"/"+multipartFile.getOriginalFilename())); 
     } catch (IllegalStateException | IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
     } 
    } 

Вот filePathToSave 'есть путь, где и хотите сохранить файл, снова читать тот же путь

+0

Я пытаюсь получить этот файл на контроллере, используя приведенный ниже код. –

+0

Я пытаюсь получить этот файл на контроллере, используя код ниже. Список files = travelExcelForm.getFiles(); \t \t Список fileNames = новый ArrayList (); \t \t \t \t если (null!= Файлы && files.size()> 0) { \t \t \t для (MultipartFile multipartFile: файлы) { \t \t \t \t Струнный FileName = multipartFile.getOriginalFilename(); }} здесь также появляется только имя файла, а не файл. если это возможно, вы можете отправить мне код для этого. –