后台(java)接收,先用二进制流打印出来
InPutStream is = request.getInputStream();
StringBuilder sb = new StringBuilder();
byte[] bytes = new byte[1024];
int b= 0;
if((b=is.read())!=-1){
sb.add(b);
}
System.out.print(b);
循环打印 一堆乱码和首位两段英文,可以获知 文件的分隔是根据 那一行英文来分隔的,中间那堆乱码就是二进制文件。
那么只要把 那几句英文干掉 替换出文件的字节流即可写到本地。
看看博客 嗯 FileUpload就有直接可以使用的方法
使用multipart/form-data提交的数据使用HttpServletRequest对象的getParameter()等方法无法读取。
HttpServletRequeest request=....
if(ServletFileUpload.isMultipartContent(request))
{
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List<FileItem> items = upload.parseRequest(request);
for(FileItem i: items)
{
i.getFieldName(); //参数名
//i.getString(); //参数值(返回字符串),如果是上传文件,则为文件内容
//i.get(); //参数值(返回字节数组),如果是上传文件,则为文件内容
//i.getSize(); //参数值的字节大小
//i.getName(); //上传文件的文件名
//i.getContentType(); //上传文件的内容类型
if(!i.isFormField()&&i.getSize()>0) //简单参数返回true,文件返回false
Files.write(Paths.get("/upload/"+Paths.get(i.getName()).getFileName()), i.get());
}
}