Servlet處理上傳的多個(gè)文件要怎么辦
采用Servlet方法,獲取文件內(nèi)容位置,讀四行???退一行???這個(gè)針對(duì)一個(gè)文件沒(méi)什么大問(wèn)題,要是多個(gè)文件呢?出現(xiàn)其他情況呢?有沒(méi)有靠譜一點(diǎn)的方法。。。試了一下用正則表達(dá)式可以提取上傳多個(gè)文本文件的內(nèi)容,用正則表達(dá)式就要用字符流,然后就不知道怎么處理字節(jié)形式的圖片內(nèi)容,出現(xiàn)了編碼的問(wèn)題。傷心。 _(:3 」∠)_
//獲取臨時(shí)文件輸入流 FileInputStream?in?=?new?FileInputStream(tempFile); InputStreamReader?reader?=?new?InputStreamReader(in); BufferedReader?br?=?new?BufferedReader(reader); //將輸入流數(shù)據(jù)存到字符串中 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(); //將保存有多個(gè)文件信息的字符串分割為多塊 String[]?items?=?result.split(temp); for?(String?item?:?items)?{ //獲取文件名并創(chuàng)建文件 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); } //獲取文件內(nèi)容并保存 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
試試看把字符拆成字節(jié)來(lái)讀,然后自己再寫(xiě)代碼解析出字符也是可以的試試用URLDecode解碼試試,注意編碼一致性
2016-04-17
換了一種方法,可以處理多個(gè)文件,可以是文本,可以是圖片或者其他。