最近工作中又遇到上传了。。。记得以前用的Spring中的MultipartFile 对象。可以用这个对像来获得 客户端的PC 机上的文件上传的流InputStream ins = file.getInputStream();如果用Servlet的话 还要下载jar包 ,记得好像是 apach FileUpload 的jar好不麻烦。
其实在客户端的PC机器上选择了上传文件并点击了上传按钮之后文件的内容就已经存储到了request对象内了。这时我们可以用 request对象来获得来自客户端PC上传的流,然后按需求写到指定的目录。
代码如下(信手写的,仅供参考):
protected void fileUpload(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
//获取PC端上传来的文件流
InputStream in = request.getInputStream();
//计算流的总大小
total = in.available();
//定义输出流指定输出目录
FileOutputStream fos = new FileOutputStream(new File("e:/123/aa.txt"));
int len;
byte[] buffer = new byte[1024];
while((len=in.read(buffer))>0){
alreadyReadLen+=len;
status = 1;
fos.write(buffer,0,len);
}
fos.close();
in.close();
synchronized (this) {
alreadyReadLen = -1;
total = -1;
status = 0;
}
上面的代码会出现 浏览器页面上的表单域信息也加入到了 inputStream 流里面了。这样 流里的信息就是 表单域信息和文件域信息的和,要将文件流数据和表单数据做分离处理。