Aşağıdaki şekilde çalıştırıyorum şu an. Ama şöyle bir problem var. Dosya ismindeboşluk olursa ekrana o dosyanın ismini sadece boşuluğa kadarki kısmı ile veriyor. Örnek olarak "asd ds.jpg" ise "asd" diye uzantısız bir dosya olarak alıyorum. Boşlukları _ ile değiştireceğim ama başka yol varmı?
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
if (request.getParameter("id") == null) {
out.println("Dosya Bulunamadı.");
out.close();
}
String DOC_Id = request.getParameter("id");
try {
Integer.parseInt(DOC_Id);
} catch (Exception a) {
out.println("Dosya Bulunamadı.");
out.close();
}
String realFileName = null;
String FileName = null;
ResultSet rs;
try {
rs = dbConnection.returnResult("select * from HR_Document where DOC_Id = " + DOC_Id);
realFileName = "c:\docs\" + DOC_Id + ".dat";
if (rs.next()) {
FileName = rs.getString("DOC_Name");
} else {
out.print("DOSYA BULUNAMADI : DB");
out.close();
}
} catch (Exception ex) {
out.print("DOSYA BULUNAMADI :" + ex.getMessage());
out.close();
return;
}
try {
response.setHeader("Content-Transfer-Encoding", "binary");
response.setHeader("content-disposition", "attachment; filename=" + FileName);
response.setHeader("Expires", "0");
response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
FileInputStream fileinputstream = new FileInputStream(realFileName);
int numberBytes = fileinputstream.available();
for (int i = 0; i < numberBytes; i++) {
out.print((char) fileinputstream.read());
}
fileinputstream.close();
} finally {
out.close();
}
}
The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com
|