後臺(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());
}
}