Witam ponownie.
oto co udało mi się skręcić w servlecie pobierającym plik:
public class fileServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
response.setContentType("text/plain");
out.println("<h1>Servlet File Upload Example using Commons File Upload</h1>");
out.println();
DiskFileItemFactory factory = new DiskFileItemFactory();
try {
//pobranie sample ze strumienia
ServletFileUpload servletUpload = new ServletFileUpload(factory);
List fileItems = servletUpload.parseRequest(request);
byte[] imageBytes = null;
for (Iterator iter = fileItems.iterator(); iter.hasNext();) {
FileItem fileItem = (FileItem) iter.next();
if (!fileItem.isFormField()) {
//binarna zawartosc pliku
imageBytes = fileItem.get();
// LACZENIE Z BAZA
String baza = "jdbc:sqlserver://localhost;instance=SQLEXPRESS;DatabaseName=test;";
String user = "tester";
String pass = "qwe123";
java.sql.Connection conn = null;
try {
conn = DriverManager.getConnection(baza, user, pass);
} catch (SQLException e) {
out.println("Blad przy laczeniu z baza!");
out.println(e.toString());
System.exit(1);
}
//DODAWANIE PLIKU
Statement s = null;
try {
s = conn.createStatement();
s.executeQuery("INSERT INTO item (nazwa, typ, rozmiar, plik) VALUES ('"
+ fileItem.getName() + "','" + fileItem.getContentType() + "',"
+ fileItem.getSize() + /*"," + fileItem.get() +*/ ")");
} catch (SQLException e) {
out.println("Blad odczytu z bazy! " + e.toString());
System.exit(3);
}
out.println("Field Name = " + fileItem.getFieldName()
+ ", File Name = " + fileItem.getName()
+ ", Content type = " + fileItem.getContentType()
+ ", File Size = " + fileItem.getSize());
}
}
} catch (FileUploadException e) {
e.getMessage();
}
}
}
Mam teraz dwa problemy.
1.Po wybraniu pliku i przejściu do servleta wyświetla się błąd połączenia przeglądarki
Nie udało się nawiązać połączenia
Firefox nie może nawiązać połączenia z serwerem localhost:8080.
mimo że doszło do wykonania kodu i przesłania danych do bazy - sprawdzam to insertem w oknie połączenia z bazą
- Jak na razie udaje mi się przesyłać tylko dane tekstowe/liczbowe, nie wiem jak dokładnie sformułować inserta, aby przesłać do bazy przechwyconą przez funkcję fileItem.get(); zawartość pliku. Usunięcie zakomentowanego wywołania nie pomaga - do bazy nie ładuje się wtedy nic.
Jakieś pomysły?