2015-07-20 81 views
1

我正在使用JSP和servlet創建一個使用Eclipse EE的動態Web項目。在該項目中,用戶將在硬盤中選擇一個映像文件,並將其發送到LongBlob字段中的mysql數據庫。jsp在數據庫中保存blob圖像mysql - 我的代碼不起作用

這是我的形式選擇映像文件:

<form name="formfoto1" action="guardafotonueva.jsp" method="post"> 
Comentario: 
<input type="text" name="comentariofoto1"> 
<input type="file" name="archivofoto1"> 
<input type="submit" name="subir" value="Enviar foto"> 
</form> 

這是不工作的代碼:

<% String cadenanombre, cadenausuarioadmin, cadenaclaveadmin; 
Connection conexion = null; 
String nombrearchivofoto1, sqlfoto1, cadenacomentariofoto1, cadenacodigofoto1, cadenaarchivofoto1; 
FileInputStream fisfoto1 = null; 
PreparedStatement psfoto1, pscodigof1; 
Vector<Integer> vectorcodigofotos; 
Vector<Integer> vectorcodigocliente = new Vector<Integer>(); 
ResultSet rscodigof1, rscantidadclientes; 
Integer rcodigof1 = 11, cantidadclientes = 0, vn; 
String sql, sqlcodigof1; vectorcodigofotos = new Vector<Integer>(); 
String sqlactualizaclientesfotos, cadenaarchivo, cadenacodigotemafoto1, cadenacodigofotofoto1; 
cadenacomentariofoto1 = request.getParameter("comentariofoto1"); URL url; 
cadenaarchivofoto1 = request.getParameter("archivofoto1"); File file = null; 
    try 
    { 
      Class.forName("com.mysql.jdbc.Driver").newInstance(); 
      conexion = DriverManager.getConnection("jdbc:mysql://localhost/entrenam_contenidos", "entrenam_bruno", "Bsl30121986"); 
      session.setAttribute("sessionfoto1", cadenaarchivofoto1); 
      file = new File("C://Users//Aloisio//fotos//"+cadenaarchivofoto1); 
    } 
    catch(Exception ex) 
    { 
      out.println("Conexion sigue con problemas"); 
    } 
      sqlcodigof1 = "select codigof1 from foto1 order by idf1 desc limit 1"; 
      out.println("Cadena foto: "+cadenaarchivofoto1+" su longitud es: "+cadenaarchivofoto1.length()+"</br>"); 
      pscodigof1 = conexion.prepareStatement(sqlcodigof1); 
      rscodigof1 = pscodigof1.executeQuery(); 
      while(rscodigof1.next()) 
      { 
       rcodigof1 = rscodigof1.getInt("codigof1"); vectorcodigofotos.addElement(rcodigof1); rcodigof1++; 
      } 
      session.setAttribute("codigosfotos", vectorcodigofotos); 
      session.setAttribute("cantidadfotos", vectorcodigofotos.size()); 

      sql = "insert into foto1 (codigof1, comentariof1, archivof1, blobf1) values (?, ?, ?, ?)"; 
      psfoto1 = conexion.prepareStatement(sql); 
      file = new File("C://Users//Aloisio//fotos//"+cadenaarchivofoto1); 
      fisfoto1 = new FileInputStream(file); 
      psfoto1.setInt(1, rcodigof1); 
      psfoto1.setString(2, cadenacomentariofoto1); 
      psfoto1.setString(3, cadenaarchivofoto1); 
      psfoto1.setBinaryStream(4, fisfoto1, (int) (file.length())); 
      psfoto1.execute(); 

    %> 
    </body> 
    </html> 
+0

你在這裏得到什麼錯誤? – Ajit

+0

FileNotFound(沒有這樣的文件或目錄) – asuarroyo

+0

你檢查過你的文件路徑是否正確或不在jsp上。文件存在於C盤 – Ajit

回答

2

嘗試

<form name="formfoto1" action="guardafotonueva.jsp" enctype="multipart/form-data" method="post"> 

,而不是

<form name="formfoto1" action="guardafotonueva.jsp" method="post"> 
+0

包括「enctype =」multipart/form-data「圖片的值爲null。 – asuarroyo

0

試試看看這個代碼。

try { 
MultipartHttpServletRequest multipartRequest; 
    MultipartFile f; 
    multipartRequest = (MultipartHttpServletRequest) request; 
    f = multipartRequest.getFile("file"); 
    if(f != null) { 
     long size = f.getSize(); // size of the file 
     byte[] filebytes= f.getBytes() // get the file data as byte array, what you are going to store it as blob in DB 
     String fileName = f.getOriginalFilename(); // Name of file 
    } 

    } catch (IOException e) { 
    } finally { 
     // do something 
    } 
+0

對不起!要插入這段代碼,我需要導入一些packege。我無法識別要導入的包。 – asuarroyo

+0

@asuarroyo請下載這個[link](https://netbeans.org/downloads/)中的NetBeans IDE,你的IDE將會照顧你的導入。 –

相關問題