参考文献:
http://sind.javaeye.com/blog/254399
fu.setSizeMax(4194304); //设置文件大小.
fu.setSizeThreshold(4096); //设置缓冲大小.
fu.setRepositoryPath(dir+"/test"); //设置临时目录.
List fileItems = fu.parseRequest(request); //解析请求,返回一个集合.
System.out.println("abcc");
Iterator i = fileItems.iterator();
while(i.hasNext())
{
FileItem fi = (FileItem)i.next();
if(fi.isFormField()) //这是用来确定是否为文件属性,
{
String fieldName = fi.getFieldName(); //这里取得表单名
String fieldvalue=fi.getString(); //这里取得表单值
out.print("<br>");
out.print("name:"+fieldName);
out.print("value:"+fieldvalue);
System.out.println("formField " + fieldName + " " + fieldvalue);
}
else //这里开始外理文件
{
String fileName = fi.getName(); // 返回文件名包括客户机路径
if(fileName != null){
out.print(fileName);
out.print("aaa<br>" + fi.getFieldName()); // 打印文件表单名
fi.write(new File(dir + "/data"));
System.out.println(fileName);
System.out.println("upload");
System.out.println(dir.toString());
}
}
}
}
catch(Exception e)
{
System.out.println("ab");
out.println(e.getMessage());
}
System.out.println("aaa");
%>
</body>
</html>
commons-fileupload-1.2.1.jar
commons-io-1.1.jar
需要上面的2个包,没有下面的会报错。
上面的代码测试通过。
下载部分:(不要模仿,只是说明可以使用。)
<%
String filename = "data.txt";
// String filepath = "D:/eclipseworkspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/fileTransfer/data";
String filepath = request.getRealPath("/") + "data";
System.out.println(filepath);
response.setContentType("text/plain");
response.setHeader("Location",filename);
response.setHeader("Content-Disposition", "attachment; filename=" + filename);
OutputStream outputStream = response.getOutputStream();
InputStream inputStream = new FileInputStream(filepath);
byte[] buffer = new byte[1024];
int i = -1;
while ((i = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, i);
}
outputStream.flush();
outputStream.close();
inputStream.close();
outputStream = null;
%>