Problem ze strumieniem

0

Witam, mam nastepujacy problem: kiedy w jsp pobieram strumien (InputStrem metoda request.getinputStream) w moim skrypcie wykorzystuje go dwa razy. Za kazdym razem czytam od poczatku do konca, jednak operacja ta mi sie nie udaje poniewaz po pierwszym przeczytaniu moj strumien (wskaznik w nim) jest ustawiony na koncu. Nie wiem jak cofnac (zresteowac strumen) aby moc go odczytac.

InputStream is=request.getInputStream();
BufferedReader br=
   new BufferedReader(new InputStreamReader(is));
 while(true){ 
  String s=br.readLine();
   if(s==null) break;
   out.println(s+"<br>");
  }

 while(true){ //te drugie czytanie juz nie dziala
  String s=br.readLine();
  if(s==null) break;
  out.println(s+"<br>");
}
}
0

Nie da się zresetować strumienia. Zresztą w jakim celu dwa razy czytasz to samo? Nie lepiej:

InputStream is=request.getInputStream();
BufferedReader br=
   new BufferedReader(new InputStreamReader(is));
String outS = "";
 while(true){
  String s=br.readLine();
   if(s==null) break;
   outS+=(s+"<br>");
  }
out.println(outS);
out.println(outS);
0

Powyzszy przyklad to byl taki pogladowy. A czytam dwa razy poniewaz mam formularz ktory zawiera dwa pola tekstowe i jeden inputfile i teraz (enctype="multipart/form-data") normalnie nie da sie tych danych wydobyc. Dlatego chcialem za pierwszym razem wygobyc dwa pola tekstowe i ich wartosc a za drugim razem plik

0

oj... nie myśleć, używać narzędzi, które zrobią to za nas:

http://commons.apache.org/fileupload/

szczególnie jak ktoś przygotował je z a nas. Apache Commons Upload to "standardowa" biblioteka rozwiązująca ten problem. Rzecz polega na tym, że request jest czytany jako jeden strumień. Apacze napisali narzędzie, które z tego strumienia wybiera poszczególne pliki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0