我有一个要求,允许用户输入服务器路径和文件名并下载文件。
我使用了下面的代码来达到这个目的:
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 it的文件在下载时都会追加一行。
开发人员指南中提到的使用messageDownload项的方法不够清楚。它提到了一个VO。这个VO的问题应该是什么?如何在此表中插入用于此VO的文件?
请提出解决办法。
发布于 2016-06-16 05:53:14
我终于解决了我的疑问。
我用过messageDownload Bean来达到这个目的。
创建表xx_LOBS ( FILE_ID编号>主键,FILE_CONTENT_TYPE VARCHAR2(100) NULL,> FILE_DATA CLOB ) LOB (FILE_DATA)存储AS >( TABLESPACE APPS_TS_MEDIA >启用存储行>块32768 > PCTVERSION 10 > NOCACHE >存储(>初始128 K>下128 K>)MINEXTENTS 1> MAXEXTENTS 2147483645 > PCTINCREASE 0> BUFFER_POOL DEFAULT >);
创建或替换过程xx_to_clob_proc (p_dir IN VARCHAR2,p_file_name IN VARCHAR2,ret_code OUT VARCHAR2,ret_msg OUT VARCHAR2)为v_bfile BFILE;v_clob v_bfile := BFILENAME (p_dir,p_file_name);DBMS_LOB.FILEEXISTS (v_bfile) =1,DBMS_LOB.OPEN(v_bfile);DBMS_LOB.CREATETEMPORARY (v_clob,TRUE,DBMS_LOB.SESSION);DBMS_LOB.LOADFROMFILE (v_clob,v_bfile,DBMS_LOB.GETLENGTH (v_bfile));DBMS_LOB.CLOSE (v_bfile);插入xx_LOBS值(FILE_ID_SEQ.NEXTVAL,'text/html',v_clob);结束IF;ret_code := 'S';ret_msg :=‘存储在LOB表中的文件’;提交;当其他文件被保存在ret_code :=‘E’时异常;ret_msg :=错误:文件未生成。回滚;结束;当其他人随后使用ret_code := 'E';ret_msg :=‘错误时出现异常:’:=sqlerrm;插入到xx_LOBS值中(FILE_ID_SEQ.NEXTVAL,'ERROR',EMPTY_CLOB();提交;END;
我为文件路径和文件名添加了一个输入字段。然后,在单击GO按钮时,调用步骤2过程,并相应地执行messageDownload项VO。
如果有任何疑问,请告诉我。
https://stackoverflow.com/questions/37744420
复制相似问题