他是用2进制流传输的,你要按流那出来,解析。具体的自己查API文档。方法都给你说了,提高不了。
提示下,request.getInputStream()-------------------------------------------------这是我使用Apache 的fileupload包写的上传代码 DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List items = upload.parseRequest(request);
Iterator it = items.iterator();
while (it.hasNext()) {
FileItem item = (FileItem) it.next();
if (item.isFormField()) { //如果是表单域
System.out.println("表单的参数名称:" + item.getFieldName()
+ ",对应的参数值:" + item.getString("GBK"));
if(item.getFieldName().equals("id")){
goodsID=item.getString();
goodsID=ChangeEncoding.changeToGBK(goodsID);
}
} else { //如果是文件
if (item.getName() != null && !item.getName().equals("")) {
System.out.println("上传文件的大小:" + item.getSize());
System.out.println("上传文件的类型:" + item.getContentType());
System.out.println("上传文件的名称:" + item.getName()); File file = new File(sc.getRealPath("/")
+ 保存路径, 保存文件名);
item.write(file);
}
}
}
} catch (Exception e) {
e.printStackTrace();
System.err.println("上传文件不成功!");
}
文件上传和普通请求都是用2进制传输的,但是参数的拼接方式不一样,普通请求是param1 , param2.....这样一个一个接起来的。但是文件上传是吧文件的2进制数据和参数混杂起来,报文中还掺杂着一些分割线,标识符等特殊信息。因此对于文件上传,你需要自己来做报文的解析,把参数报文还原成应有的样子,这个现在有很多控件都有这个功能,可以使用apache 的common-fileupload来做