首先看服务器的代码,是一个servlet,重写doGet和doPost方法。
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String name = request.getParameter("name");
// request.getParameter得到的String是按照美国人的iso8859-1
if (name != null) {
name = new String(name.getBytes("iso8859-1"), "utf-8");
}
String password = request.getParameter("password");
System.out.println(password);
System.out.println(name);
if ("zhangsan".equals(name) && "123456".equals(password)) {
response.getOutputStream().write("login success".getBytes());
} else {
response.getOutputStream().write("login failed".getBytes());
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/* doGet(request, response);*/
//接受浏览器上传的文件
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if(isMultipart){//如果是带文件的
//文件在服务器的路径
String realpath = request.getSession().getServletContext().getRealPath("/files");
System.out.println(realpath);
File dir = new File(realpath);
if(!dir.exists()) dir.mkdirs();
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");
try {
List<FileItem> items = upload.parseRequest(request);
for(FileItem item : items){
if(item.isFormField()){
String name1 = item.getFieldName();//
String value = item.getString("UTF-8");//ֵ
System.out.println(name1+ "="+ value);
}else{
//修改文件名为当前时间毫秒数
item.write(new File(dir, System.currentTimeMillis()+ item.getName().substring(item.getName().lastIndexOf("."))));
}
}
response.getOutputStream().write("你好".getBytes("iso-8859-1"));
} catch (Exception e) {
e.printStackTrace();
}
}else{//不带文件的
doGet(request, response);
}
}
}
其次先准备一个工具类将把一个inputstream里面的内容转化成一个byte[]。
public class StreamTool {
/**
* 把一个inputstream里面的内容转化成一个byte[]
*/
public static byte[] getBytes(InputStre