Hello everyone,
I have a situation and I need help.
My form looks like this:
<form enctype="multipart/form-data" action="XMLRegister" method="post">
<p>
<fieldset class="fi">
<legend class="le">Teksto anotavimas</legend>
<label class="la">Pasirinkite failą:</label>
<input class="ip" type="file" name="upload" size="30">
<p>
<label class="la">Dokumentacija galite atsisiųsti i <a href="#">čia</a>.</label>
</fieldset>
<p>
<label class="la">Naujo dokumento pavadinimas:</label>
<input class="ip" type="text" name="docName" size="30">
<p>
<label class="la">Teksto pavadinimas:</label>
<input class="ip" type="text" name="textName" size="30">
<p>
<label class="la">Autorius:</label>
<input class="ip" type="text" name="author" size="30">
<p>
<label class="la">Tekstą parengusi institucija:</label>
<input class="ip" type="text" name="organization" size="30">
<p>
<label class="la">Ledimo metai:</label>
<input class="ip" type="text" name="date" size="30">
<p>
<label class="la">Tema:</label>
<select class="se" name="topic" size="1">
<option>Mokslinių tyrimų politika</option>
<option>Auktojo mokslo politika</option>
<option>Tęstinio mokymosi politika</option>
<option>Profesinio rengimo politika</option>
<option>Kelios temos</option>
</select>
<p>
<label class="la">Tipas:</label>
<select class="se" name="type" size="1">
<option>Lietuviki tekstai</option>
<option>ES ir verstiniai tekstai</option>
</select>
<p>
<label class="la">anras:</label>
<select class="se" name="genre" size="1">
<optgroup label="Lietuviki tekstai">
<option>Įstatymai</option>
<option>Kiti aukčiausių valdios institucijų politiniai dokumentai</option>
<option>Strateginiai dokumentai</option>
<option>Poįstatyminiai aktai</option>
<option>Mokslo ir ugdymo politikos įgyvendinimo institucijų ir projektų dokumentai</option>
<option>Mokslo ir studijų institucijų dokumentai</option>
<option>Informaciniai leidiniai, srities būklės tyrimai, vertinimai, galimybių studijos</option>
<option>Spaudos praneimai, diskusijų mediaga</option>
</optgroup>
<optgroup label="ES ir verstiniai tekstai">
<option>ES sutartys</option>
<option>Dvialės ir daugiaalės sutartys, jų įgyvendinimą reglamentuojantys dokumentai</option>
<option>ES tarybos, EP, EK ir kitų tarptautinių institucijų politiniai dokumentai</option>
<option>Strateginiai dokumentai</option>
<option>Mokslinių tyrimų, ugdymo sričių bendradarbiavimo programų dokumentai</option>
<option>ES ir kitų tarptautinių mokslo ir ugdymo politikos įgyvendinimo institucijų ir projektų dokumentai</option>
<option>Informaciniai leidiniai, srities būklės tyrimai, vertinimai, galimybių studijos</option>
<option>Spaudos praneimai, mokslo ir ugdymo politikos temų verstiniai straipsniai, diskusijos</option>
</optgroup>
</select>
<p>
<input id="sub" type="submit" value="Registruoti">
</form>
I'm uploading file using fileupload library.
My servlet looks like this:
//------------------------------------------------------------------------------
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
realPath = getServletContext().getRealPath(DESTINATION_DIR_PATH);
destinationDir = new File(realPath);
if(!destinationDir.isDirectory()) {
throw new ServletException(DESTINATION_DIR_PATH + " is not a directory");
}
}
//------------------------------------------------------------------------------
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html; charset=UTF-8");
request.setCharacterEncoding("UTF-8");
System.out.println(request.getParameter("docName"));
upl = new XMLFileUpload(destinationDir);
try {
upl.sendUpload(request, response);
String dir = StructureHandler.getDocName();
String outputDir = realPath + DESTINATION_DOWNLOAD_PATH + StructureHandler.getParameter()[0];
rw.createDocument(outputDir);
} catch (Exception ex) {
Logger.getLogger(XMLRegister.class.getName()).log(Level.SEVERE, null, ex);
}
RequestDispatcher rd = request.getRequestDispatcher("/succesful.jsp");
rd.forward(request, response);
}
Ant the upload method:
public void sendUpload(HttpServletRequest request, HttpServletResponse response) throws Exception{
int i = 0;
FileItemFactory fileItemFactory = new DiskFileItemFactory();
ServletFileUpload uploadHandler = new ServletFileUpload(fileItemFactory);
try {
request.setCharacterEncoding("UTF-8");
List items = uploadHandler.parseRequest(request);
Iterator itr = items.iterator();
while(itr.hasNext()) {
FileItem item = (FileItem) itr.next();
if(item.isFormField()) {
StructureHandler.getParameter() = item.getString();
i++;
} else {
File file = new File(destinationDir, item.getName());
item.write(file);
StructureHandler.setDocName(item.getName());
tr.readFile(file.getAbsolutePath());
}
}
} catch(FileUploadException ex) {
throw new Exception("Error encountered while parsing the request " + ex);
}
}
The problem is that I can not get my symbols from fields encoded correctly.
Did I miss something?