Ich habe eine Anforderung zu erlauben, Benutzer Serverpfad und Dateiname und Download-Datei eingeben.
verwenden ich den folgenden Code, um den Zweck zu dienen:OAF - Datei vom Server herunterladen
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();
}
}
Das Problem dabei ist, dass jede Datei größer als 48 KB, wenn heruntergeladen eine zusätzliche Zeile in ihm anhängt.
Die im Developer's Guide erwähnte Methode zur Verwendung des Objekts messageDownload ist nicht klar genug. Es erwähnt eine VO. Was sollte die Abfrage dieser VO sein? Wie fügen wir eine Datei in diese Tabelle ein, um in dieser VO verwendet zu werden?
Bitte schlagen Sie eine Lösung vor.