Probleme quand on clique sur le boutton upload
Fermé
natasha82
Messages postés
55
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour j'ai un programme qui fait upload fichier mais j'ai un soucis c'est lorsque je clique sur le bouton upload il m'affiche page blanche et j'ai une exception java.sql.SQLException: No value specified for parameter 3
la table cours(id,tilte,file)
{ id_Temp int 25 }
{ tilte varchar 25 }
{ file text 45 }
voici la jsp:
voici la servlet:
la table cours(id,tilte,file)
{ id_Temp int 25 }
{ tilte varchar 25 }
{ file text 45 }
voici la jsp:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<form method="POST" action="Upload" enctype="multipart/form-data" />
<center>
<table border="1" width="254" cellpadding="5"/>
<thead>
<th colspan="5">upload file </th>
</thead>
<tbody>
<tr>
<td>tilte:</td>
<td><input type="text" name="title"size="30"/>
</td>
</tr>
<tr>
<td> Choose file:</td>
<td><input type="text" name="file_upload" size="30"/>
</td>
</tr>
<tr>
<td colspan="1"><center><input type="submit" value="upload"></center></td>
</tr>
</tbody>
</table>
</center>
</form>
</body>
</html>
voici la servlet:
package Servlet;
import com.sun.corba.se.spi.protocol.RequestDispatcherDefault;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Statement;
import java.util.Random;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
public class UploadController extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter() ;
InputStream inputStream=null;
Random rand= new Random();
int n=rand.nextInt(9999)+1;
String idTemp=(String.valueOf(n));
String Title= request.getParameter("title");
Part filePart=request.getPart("file_upload");
if(filePart!=null)
{
System.out.println(filePart.getSize());
System.out.println(filePart.getInputStream());
System.out.println( filePart.getContentType());
inputStream =filePart.getInputStream();
}
try {
Class.forName("com.mysql.jdbc.Driver");
Connection cn=DriverManager.getConnection("jdbc:mysql://localhost:3306/bdd","root","");
String sql="INSERT INTO cours(id_Temp,title,file)VALUES(?,?,?)";
PreparedStatement st= cn.prepareStatement(sql);
st.setString(1, idTemp);
st.setString(2, Title);
if(inputStream!=null){
st.setBinaryStream(3, inputStream, (int) filePart.getSize());
}
int row=st.executeUpdate();
if(row>0){
out.println("file upload");
cn.close();
RequestDispatcher rs=request.getRequestDispatcher("UploadFiles.jsp");
rs.include(request, response);
}
else{
out.println("on peu pa");
cn.close();
RequestDispatcher rs=request.getRequestDispatcher("UploadFiles.jsp");
rs.include(request, response);
}
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}
pouvez vous m'aider svp.merci
A voir également:
- Probleme quand on clique sur le boutton upload
- Youtube upload - Télécharger - Diffusion
- Cliquez sur ce lien. en n'utilisant que le clavier, quel mot obtenez-vous ? ✓ - Forum Windows
- Ma souris ne clique plus ✓ - Forum Windows
- J'ai cliqué sur un lien douteux android - Forum Virus
- Fourtoutici upload - Forum Imprimante
2 réponses
Bonjour,
Comme dit par le père. ton problème vient de ton
Faire des if pour vérifier que les données existent c'est bien, mais si tu n'as pas de else et que tu continues quand même le code, c'est incohérent.
Ici tu fais un
Voir la documentation.
Bref, tu fais
Même chose,
Et au final tu te retrouves avec une SQLException, mais c'est vraiment le dernier rempart pour détecter l'erreur, normalement tu aurais du arreter ton traitement bien avant, dès que la lecture de la requête montre qu'il manque des données.
Comme dit par le père. ton problème vient de ton
setBinaryStream(3qui ne se fait jamais.
Faire des if pour vérifier que les données existent c'est bien, mais si tu n'as pas de else et que tu continues quand même le code, c'est incohérent.
Ici tu fais un
Part filePart=request.getPart("file_upload");ce qui te renverra null, car tu as mis
<input type="text" name="file_upload" size="30"/>or les Part correspondent à des "multipart/form-data"
Voir la documentation.
Bref, tu fais
if(filePart!=null) { ... inputStream =filePart.getInputStream(); }sauf que comme filePart vaut null, inputStream n'est pas initialisé, il vaut donc null.
Même chose,
if(inputStream!=null){ st.setBinaryStream(3tu as inputStream qui vaut null, donc tu ne mets pas le troisième argument.
Et au final tu te retrouves avec une SQLException, mais c'est vraiment le dernier rempart pour détecter l'erreur, normalement tu aurais du arreter ton traitement bien avant, dès que la lecture de la requête montre qu'il manque des données.
Part filePart=request.getPart("file_upload"); if (filePart==null) { // j'envoie un message d'erreur, il manque une donnée return; // je ne fais pas la suite, ça ne sert à rien }
Je me risque quand même à continuer de suggérer : c'est peut-être que inputStream est null. L'as-vérifié en mettant un else à ton if(inputStream!=null) ?