第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

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


正在回答

2 回答

試試看把字符拆成字節(jié)來(lái)讀,然后自己再寫(xiě)代碼解析出字符也是可以的試試用URLDecode解碼試試,注意編碼一致性

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

Xy丶 提問(wèn)者

和URLDecode沒(méi)有什么關(guān)系吧,字符拆成字節(jié)用到了
2016-04-17 回復(fù) 有任何疑惑可以回復(fù)我~

換了一種方法,可以處理多個(gè)文件,可以是文本,可以是圖片或者其他。

//讀取臨時(shí)文件
RandomAccessFile?randomOfTempFile?=?new?RandomAccessFile(tempFile,?"r");
//temp為post請(qǐng)求內(nèi)容分隔符
String?temp?=?randomOfTempFile.readLine();
String?content;
while((content?=?randomOfTempFile.readLine())?!=?null)?{
	//解決中文文件名亂碼問(wèn)題
	content?=?new?String(content.getBytes("ISO-8859-1"),?"utf-8");
	if(content.contains("filename"))?{
		System.out.println(content);
		//獲取文件名
		String?regexOfFileName?=?"filename=\"([^\"]*)";
		Pattern?patternOfFileName?=?Pattern.compile(regexOfFileName);
		Matcher?matcherOfFileName?=?patternOfFileName.matcher(content);
		String?fileName?=?"";
		File?saveFile?=?null;
		if(matcherOfFileName.find())?{
			fileName?=?matcherOfFileName.group(1);
			System.out.println(fileName);
			saveFile?=?new?File(path,?fileName);
		}
		//獲取文件內(nèi)容起始結(jié)束位置
		randomOfTempFile.readLine();
		randomOfTempFile.readLine();
		long?startPosition?=?randomOfTempFile.getFilePointer();
		long?endPosition;
		while(true)?{
			endPosition?=?randomOfTempFile.getFilePointer();
			String?tempStr?=?randomOfTempFile.readLine();
			if?(tempStr?!=?null?&&?tempStr.contains(temp))?{
				break;
			}
		}
		//保存文件
		randomOfTempFile.seek(startPosition);
		RandomAccessFile?randomOfSaveFile?=?new?RandomAccessFile(saveFile,?"rw");
		while(startPosition?<?endPosition){
			randomOfSaveFile.write(randomOfTempFile.readByte());
			startPosition?=?randomOfTempFile.getFilePointer();
		}
		randomOfSaveFile.close();
	}
}
randomOfTempFile.close();


0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消
Java中的文件上傳下載
  • 參與學(xué)習(xí)       77386    人
  • 解答問(wèn)題       360    個(gè)

由簡(jiǎn)入深,輕松實(shí)現(xiàn)文件上傳下載功能及相關(guān)框架的使用

進(jìn)入課程

Servlet處理上傳的多個(gè)文件要怎么辦

我要回答 關(guān)注問(wèn)題
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)