Bonjour, j'ai un petit probl=E8me avec un applet qui envoi un fichier =E0
une servlet. Le fichier est bien envoy=E9 environ 1 fois tous les 15
minutes. Le reste du temps, il y a 6 bytes de diff=E9rent dans l'ent=EAte
du fichier ce qui rend illisible mon fichier wav. Est-ce un probl=E8me
d'URLCOnnexion?
Servlet:
//Recevoir fichier wav
try {
InputStream input =3D request.getInputStream();
//Lire nom du fichier
DataInputStream dis =3D new DataInputStream(input);
File file =3D new File("/var/www/html/phpBB2/audio/" + (String)
dis.readUTF());
FileOutputStream writer =3D new FileOutputStream(file);
//Lire contenu du fichier
int octet;
while((octet =3D dis.read()) !=3D -1)
writer.write(octet);
writer.close();
PrintWriter sortie =3D new
PrintWriter(response.getOutputStream(),true);
sortie.println("OK");
dis.close();
input.close();
sortie.close();
Applet:
// Envoi du fichier wav
try {
URL url =3D new
URL("http://servlet1.bercoqc.com/forum1/servlet/UploadServlet");
URLConnection connexion =3D url.openConnection();
connexion.setDoOutput(true);
OutputStream outputStream =3D
connexion.getOutputStream();
DataOutputStream dos =3D new
DataOutputStream(outputStream);
//Ecrire nom du fichier
dos.writeUTF(m_outputFile.getName());
dos.flush();
//Ecrire contenu
dos.write(FileTool.readBytes(m_outputFile));
dos.flush();
//Effacer fichier sur ordi client
// m_outputFile.delete();
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
TestMan
Bonjour, j'ai un petit problème avec un applet qui envoi un fichier à une servlet. Le fichier est bien envoyé environ 1 fois tous les 15 minutes. Le reste du temps, il y a 6 bytes de différent dans l'entête du fichier ce qui rend illisible mon fichier wav. Est-ce un problème d'URLCOnnexion?
Servlet: //Recevoir fichier wav try { InputStream input = request.getInputStream(); //Lire nom du fichier DataInputStream dis = new DataInputStream(input); File file = new File("/var/www/html/phpBB2/audio/" + (String) dis.readUTF()); FileOutputStream writer = new FileOutputStream(file); //Lire contenu du fichier int octet; while((octet = dis.read()) != -1) writer.write(octet);
writer.close(); PrintWriter sortie = new PrintWriter(response.getOutputStream(),true); sortie.println("OK"); dis.close(); input.close(); sortie.close();
Applet: // Envoi du fichier wav try { URL url = new URL("http://servlet1.bercoqc.com/forum1/servlet/UploadServlet"); URLConnection connexion = url.openConnection(); connexion.setDoOutput(true); OutputStream outputStream > connexion.getOutputStream(); DataOutputStream dos = new DataOutputStream(outputStream); //Ecrire nom du fichier dos.writeUTF(m_outputFile.getName()); dos.flush(); //Ecrire contenu dos.write(FileTool.readBytes(m_outputFile)); dos.flush();
//Effacer fichier sur ordi client // m_outputFile.delete();
Pas d'idée ... Mettez ethereal sur la ligne pour voir ce qu'il est envoyé entre serveur et client. Ainsi vous trouverez de quel coté vient le problème (envoi ou reception). Ensuite passer en mode debogage le coté qui pose problème et faire du pas à pas pour comprendre d'où vient le schmillblick précisement !
Sinon, perso, j'aurais plutot fait un POST du binaire du fichier en passant simplement le nom dans l'URL. Par exemple, associer la servlet UploadServlet /upload/* et obtenir ainsi : http://servlet1.bercoqc.com/forum1/upload/test.wav
Qui permet de simplifier l'envoie du flux et de revenir aux sources.
Attention à : - l'injection de fichier : on ne doit pas pouvoir donner de nom de fichier tels que /etc/passwd et autres chemins relatifs ;-) - la performance de l'écriture du fichier : un BufferedOutpuStream et de la lecture et écriture en block (style 64k) serait un début interessant ...
A+ TM
Bonjour, j'ai un petit problème avec un applet qui envoi un fichier à
une servlet. Le fichier est bien envoyé environ 1 fois tous les 15
minutes. Le reste du temps, il y a 6 bytes de différent dans l'entête
du fichier ce qui rend illisible mon fichier wav. Est-ce un problème
d'URLCOnnexion?
Servlet:
//Recevoir fichier wav
try {
InputStream input = request.getInputStream();
//Lire nom du fichier
DataInputStream dis = new DataInputStream(input);
File file = new File("/var/www/html/phpBB2/audio/" + (String)
dis.readUTF());
FileOutputStream writer = new FileOutputStream(file);
//Lire contenu du fichier
int octet;
while((octet = dis.read()) != -1)
writer.write(octet);
writer.close();
PrintWriter sortie = new
PrintWriter(response.getOutputStream(),true);
sortie.println("OK");
dis.close();
input.close();
sortie.close();
Applet:
// Envoi du fichier wav
try {
URL url = new
URL("http://servlet1.bercoqc.com/forum1/servlet/UploadServlet");
URLConnection connexion = url.openConnection();
connexion.setDoOutput(true);
OutputStream outputStream > connexion.getOutputStream();
DataOutputStream dos = new
DataOutputStream(outputStream);
//Ecrire nom du fichier
dos.writeUTF(m_outputFile.getName());
dos.flush();
//Ecrire contenu
dos.write(FileTool.readBytes(m_outputFile));
dos.flush();
//Effacer fichier sur ordi client
// m_outputFile.delete();
Pas d'idée ... Mettez ethereal sur la ligne pour voir ce qu'il est
envoyé entre serveur et client. Ainsi vous trouverez de quel coté vient
le problème (envoi ou reception). Ensuite passer en mode debogage le
coté qui pose problème et faire du pas à pas pour comprendre d'où vient
le schmillblick précisement !
Sinon, perso, j'aurais plutot fait un POST du binaire du fichier en
passant simplement le nom dans l'URL.
Par exemple, associer la servlet UploadServlet /upload/*
et obtenir ainsi :
http://servlet1.bercoqc.com/forum1/upload/test.wav
Qui permet de simplifier l'envoie du flux et de revenir aux sources.
Attention à :
- l'injection de fichier : on ne doit pas pouvoir donner de nom de
fichier tels que /etc/passwd et autres chemins relatifs ;-)
- la performance de l'écriture du fichier : un BufferedOutpuStream et de
la lecture et écriture en block (style 64k) serait un début interessant ...
Bonjour, j'ai un petit problème avec un applet qui envoi un fichier à une servlet. Le fichier est bien envoyé environ 1 fois tous les 15 minutes. Le reste du temps, il y a 6 bytes de différent dans l'entête du fichier ce qui rend illisible mon fichier wav. Est-ce un problème d'URLCOnnexion?
Servlet: //Recevoir fichier wav try { InputStream input = request.getInputStream(); //Lire nom du fichier DataInputStream dis = new DataInputStream(input); File file = new File("/var/www/html/phpBB2/audio/" + (String) dis.readUTF()); FileOutputStream writer = new FileOutputStream(file); //Lire contenu du fichier int octet; while((octet = dis.read()) != -1) writer.write(octet);
writer.close(); PrintWriter sortie = new PrintWriter(response.getOutputStream(),true); sortie.println("OK"); dis.close(); input.close(); sortie.close();
Applet: // Envoi du fichier wav try { URL url = new URL("http://servlet1.bercoqc.com/forum1/servlet/UploadServlet"); URLConnection connexion = url.openConnection(); connexion.setDoOutput(true); OutputStream outputStream > connexion.getOutputStream(); DataOutputStream dos = new DataOutputStream(outputStream); //Ecrire nom du fichier dos.writeUTF(m_outputFile.getName()); dos.flush(); //Ecrire contenu dos.write(FileTool.readBytes(m_outputFile)); dos.flush();
//Effacer fichier sur ordi client // m_outputFile.delete();
Pas d'idée ... Mettez ethereal sur la ligne pour voir ce qu'il est envoyé entre serveur et client. Ainsi vous trouverez de quel coté vient le problème (envoi ou reception). Ensuite passer en mode debogage le coté qui pose problème et faire du pas à pas pour comprendre d'où vient le schmillblick précisement !
Sinon, perso, j'aurais plutot fait un POST du binaire du fichier en passant simplement le nom dans l'URL. Par exemple, associer la servlet UploadServlet /upload/* et obtenir ainsi : http://servlet1.bercoqc.com/forum1/upload/test.wav
Qui permet de simplifier l'envoie du flux et de revenir aux sources.
Attention à : - l'injection de fichier : on ne doit pas pouvoir donner de nom de fichier tels que /etc/passwd et autres chemins relatifs ;-) - la performance de l'écriture du fichier : un BufferedOutpuStream et de la lecture et écriture en block (style 64k) serait un début interessant ...
A+ TM
kenlet
Sinon, perso, j'aurais plutot fait un POST du binaire du fichier en passant simplement le nom dans l'URL. Par exemple, associer la servlet UploadServlet /upload/* et obtenir ainsi : http://servlet1.bercoqc.com/forum1/upload/test.wav
Peux tu me dire plus exactement comment faire un post du binaire du fichier en passant le nom dans l URL.
Merci!
Sinon, perso, j'aurais plutot fait un POST du binaire du fichier en
passant simplement le nom dans l'URL.
Par exemple, associer la servlet UploadServlet /upload/*
et obtenir ainsi :
http://servlet1.bercoqc.com/forum1/upload/test.wav
Peux tu me dire plus exactement comment faire un post du binaire du
fichier en passant le nom dans l URL.
Sinon, perso, j'aurais plutot fait un POST du binaire du fichier en passant simplement le nom dans l'URL. Par exemple, associer la servlet UploadServlet /upload/* et obtenir ainsi : http://servlet1.bercoqc.com/forum1/upload/test.wav
Peux tu me dire plus exactement comment faire un post du binaire du fichier en passant le nom dans l URL.