我正在尝试从 FTP 服务器中的特定位置检索多个 pdf/tiff 文件,加入它们并将它们发送到要显示的 jsp 页面。到目前为止,这就是我所做的。
在动作类中,a)我尝试在名为 pdfbean 的 bean 中检索文件详细信息,b)将 pdfbean 传递给建立 ftp 连接并从服务器检索文件的方法 c)将其转换为 byte[] 并返回将其添加到文档中。
现在这个文档存储在 C:\ 这不是我想要的。我想把它发送到一个jsp页面。截至目前,我不知道如何发送它。
ArrayList<PdfBean> list = msgDH.getFileDtls(hawbString);
Document doc = new Document();
PdfWriter write = PdfWriter.getInstance(doc,
new FileOutputStream("c://Image.pdf"));
write.setPdfVersion(PdfWriter.PDF_VERSION_1_5);
doc.open();
for (PdfBean pdfBean : list)
{
byte[] Image2 = getfile(pdfBean);
Image img = Image.getInstance(Image2);
doc.add(img);
doc.newPage();
}
doc.close();
System.out.println("Done saving");
下面是 getfile() 方法
private byte[] getfile(PdfBean pdfBean)
{
byte[] result = null;
boolean test = false;
FTPClient ftp = new FTPClient();
DataSourceReader dsr = new DataSourceReader();
dsr.getFtpLinks();
String ftppassword = dsr.getFtppassword();
String ftpserver = dsr.getFtpserver();
String ftpusername = dsr.getFtpusername();
System.out.println("no" + ftpserver + ftpusername + ftppassword);
try
{
ftp.connect(ftpserver);
} catch (SocketException e1)
{
e1.printStackTrace();
} catch (IOException e1)
{
e1.printStackTrace();
}
InputStream is = null;
BufferedInputStream bis = null;
try
{
boolean login = ftp.login(ftpusername, ftppassword);
} catch (IOException e1)
{
e1.printStackTrace();
}
try
{
int reply;
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply))
{
ftp.disconnect();
System.out.println("FTP server refused connection.");
} else
{
ftp.enterLocalPassiveMode();
FTPFile[] ftpFiles = ftp.listFiles(pdfBean.getFileLocation());
String fN = "";
int i = 0;
//tiff and pdf files reside in different folders.
if (pdfBean.getFileLocation().equals("/hold/TIF"))
{
String F = pdfBean.getFileName().replaceAll(".PDF", ".TIF");
for (FTPFile ftpFile : ftpFiles)
{
if (ftpFile.getName().equals(F))
{
fN = pdfBean.getFileLocation().concat("/")
.concat(F);
i = 1;
}
}
if (i == 0)
{
F = pdfBean.getFileName().replaceAll(".PDF", ".TIFF");
for (FTPFile ftpFile : ftpFiles)
{
if (ftpFile.getName().equals(F))
{
fN = pdfBean.getFileLocation().concat("/")
.concat(F);
i = 1;
}
}
}
} else
{
fN = pdfBean.getFileLocation().concat("/")
.concat(pdfBean.getFileName());
}
InputStream in = ftp.retrieveFileStream(fN);
BufferedInputStream inbf = new BufferedInputStream(in);
byte[] buffer = IOUtils.toByteArray(in);// new byte[1024];
result = buffer;
/*
* int readCount;
*
* int lenght = 0;
*
* while( (readCount = inbf.read(buffer)) > 0) { int preLength =
* lenght; lenght += readCount; byte temp[] = new
* byte[result.length]; result = new byte[lenght];
* System.arraycopy(temp,0,result,0,temp.length);
* System.arraycopy(buffer,0,result,preLength,readCount); }
*/
}
} catch (Exception ex)
{
System.out.println("Exception ----->" + ex.getMessage());
} finally
{
try
{
if (bis != null)
{
bis.close();
}
if (is != null)
{
is.close();
}
} catch (IOException e)
{
e.printStackTrace();
}
try
{
ftp.logout();
} catch (IOException e)
{
e.printStackTrace();
}
try
{
ftp.disconnect();
} catch (IOException e)
{
e.printStackTrace();
}
}
return result;
}
我得到一个 java.lang.NegativeArraySizeException 我哪里出错了。您是否预见到将 tif 和 pdf 作为图像添加到同一文档中的任何问题。最后,一旦我准备好文件,如何将它发送到 JSP 页面?