文件上传非文本文件格式错误,高手指教!
文件上传采用ServletInputStream的request.getInputStream()从表单中得到输入流,读取文件头信息后,对文件的正文采用字节输出,
代码如下:
public void doUpLoad(HttpServletRequest request) throws IOException
{
ServletInputStream in = request.getInputStream();
byte[] byteline=new byte[128];
int i=in.readLine(byteline,0,128);\\读边界(第一行)
if(i<3)return;
int boundarylength=i-2;\\得到边界长
String boundary=new String(byteline,0,i-2);\\边界字符串
i=in.readLine(byteline,0,128);\\读第二行,得到文件信息
String line=new String(byteline,0,i);
setfilename(line.substring(0,line.length()-2));
if(filename==null)return;
i=in.readLine(byteline,0,128);\\读第三行,得到文件类型
setcontenttype(new String(byteline,0,i-2));
in.readLine(byteline,0,128);\\读空行
FileOutputStream pw=new FileOutputStream((savepath==null? "" : savepath) + "aa.out");
while(true)
{
i=in.readLine(byteline,0,128);\\读正文
line=new String(byteline,0,i);
if(line.startsWith(boundary)&&line.length()==boundarylength+4)\\若是结尾边界,结束
break;
for(int a=0;a<byteline.length;a++)
pw.write(byteline[a]);\\字节输出
}
pw.close();
}
通过jsp调用读取文本格式的文件正确,但非文本格式的文件如:ppt,doc格式则不正确,估计这些文档中有特殊的字符,造成无法正确读取,
请各位高手指教!