Servlet處理上傳的多個文件要怎么辦
采用Servlet方法,獲取文件內容位置,讀四行???退一行???這個針對一個文件沒什么大問題,要是多個文件呢?出現其他情況呢?有沒有靠譜一點的方法。。。試了一下用正則表達式可以提取上傳多個文本文件的內容,用正則表達式就要用字符流,然后就不知道怎么處理字節形式的圖片內容,出現了編碼的問題。傷心。 _(:3 」∠)_
//獲取臨時文件輸入流 FileInputStream?in?=?new?FileInputStream(tempFile); InputStreamReader?reader?=?new?InputStreamReader(in); BufferedReader?br?=?new?BufferedReader(reader); //將輸入流數據存到字符串中 StringBuffer?sb?=?new?StringBuffer(); String?result?=?""; String?content; String?temp?=?br.readLine(); while((content?=?br.readLine())?!=?null)?{ sb.append(content?+?"\r\n"); } result?=?sb.toString(); System.out.println(result); br.close(); //將保存有多個文件信息的字符串分割為多塊 String[]?items?=?result.split(temp); for?(String?item?:?items)?{ //獲取文件名并創建文件 String?regexOfFileName?=?"filename=\"([^\"]*)"; Pattern?patternOfFileName?=?Pattern.compile(regexOfFileName); Matcher?matcherOfFileName?=?patternOfFileName.matcher(item); String?fileName?=?""; FileWriter?out?=?null; if(matcherOfFileName.find())?{ fileName?=?matcherOfFileName.group(1); System.out.println(fileName); File?saveFile?=?new?File(path,?fileName); out?=?new?FileWriter(saveFile); } //獲取文件內容并保存 String?regexOfFileData?=?"Content-Type[^\n]*[\r\n]*([\\s\\S]*)"; Pattern?patternOfFileData?=?Pattern.compile(regexOfFileData); Matcher?matcherOfFileData?=?patternOfFileData.matcher(item); String?fileData?=?""; if(matcherOfFileData.find())?{ fileData?=?matcherOfFileData.group(1); fileData?=?fileData.substring(0,?fileData.length()?-?2); System.out.println(fileData); out.write(fileData); out.close(); } }
2016-04-17
試試看把字符拆成字節來讀,然后自己再寫代碼解析出字符也是可以的試試用URLDecode解碼試試,注意編碼一致性
2016-04-17
換了一種方法,可以處理多個文件,可以是文本,可以是圖片或者其他。