У меня есть требование разрешить пользователю вводить путь к серверу и имя файла и загружать файл.
Для этой цели я использовал приведенный ниже код:
HttpServletResponse response = (HttpServletResponse) pageContext.getRenderingContext().getServletResponse();
File fileToDownload = null;
try
{
fileToDownload = new File(filePath);
}
catch (Exception e)
{
throw new OAException("Invalid File Path or file does not exist.");
}
response.setContentType(fileType);
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
response.setContentLength((int)fileToDownload.length());
InputStream in = null;
ServletOutputStream outs = null;
try
{
outs = response.getOutputStream();
in = new BufferedInputStream(new FileInputStream(fileToDownload));
int ch;
while ((ch = in.read()) != -1)
{
outs.write(ch);
}
}catch (IOException e)
{
// TODO
e.printStackTrace();
}finally
{
try
{
outs.flush();
outs.close();
if (in != null)
{
in.close();
}
}catch (Exception e)
{
e.printStackTrace();
}
}
Проблема в том, что любой файл размером более 48 КБ при загрузке добавляет в него дополнительную строку.
Метод использования элемента messageDownload, упомянутый в руководстве разработчика, недостаточно ясен. Там упоминается ВО. Каким должен быть запрос этого ВО? Как вставить файл в эту таблицу для использования в этом ВО?
Пожалуйста, предложите решение.