Problème: bytes manquant lors de transfert applet/servlet
2 réponses
kennylettre
Bonjour, le but de mon code est de transf=E9rer un fichier(d'un applet
vers servlet). En premier, je passe le nom et ensuite le contenu du
fichier =E0 la m=E9thode doPost(). Tout fonctionne, le seul probl=E8me
c'est qu'il manque 1 ligne de bytes dans le contenu du fichier. =C0
prendre note que lorsque le nom est hardcoder, tout le contenu est
transf=E9r=E9 correctement. Merci de votre aide. Voici mon code:
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();
//Ecrire nom du fichier
PrintWriter sortie =3D new PrintWriter(outputStream);
sortie.println(m_outputFile.getName());
sortie.flush();
//Ecrire contenu
outputStream.write(FileTool.readBytes(m_outputFile));
outputStream.flush();
BufferedReader entree =3D new BufferedReader(new
InputStreamReader(connexion.getInputStream()));
retour =3D (String) entree.readLine();
Servlet:
//Recevoir fichier wav
try {
InputStream input =3D request.getInputStream();
//Lire nom du fichier
BufferedReader entree =3D new BufferedReader(new
InputStreamReader(input));
File file =3D new File("/var/www/html/phpBB2/audio/" + (String)
entree.readLine());
FileOutputStream writer =3D new FileOutputStream(file);
//Lire contenu du fichier
int octet;
while((octet =3D input.read()) !=3D -1)
writer.write(octet);
writer.close();
PrintWriter sortie =3D new PrintWriter(response.getOutputStream(),true);
sortie.println("Votre enregistrement a ete correctement envoye");
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
Insitu
writes:
Servlet: //Recevoir fichier wav try { InputStream input = request.getInputStream(); //Lire nom du fichier BufferedReader entree = new BufferedReader(new InputStreamReader(input)); File file = new File("/var/www/html/phpBB2/audio/" + (String) entree.readLine()); FileOutputStream writer = new FileOutputStream(file); //Lire contenu du fichier int octet; while((octet = input.read()) != -1) writer.write(octet);
Trés mauvaise idée de mélanger des I/O en mode octet et en mode caractére, surtout quand on utilise des buffers. Utilisez plutôt un encodage binaire d'une chaîne de caractère (writeUTF ou writeStringn ou writeObject).
HTH,
insitu.
kennylettre@gmail.com writes:
Servlet:
//Recevoir fichier wav
try {
InputStream input = request.getInputStream();
//Lire nom du fichier
BufferedReader entree = new BufferedReader(new
InputStreamReader(input));
File file = new File("/var/www/html/phpBB2/audio/" + (String)
entree.readLine());
FileOutputStream writer = new FileOutputStream(file);
//Lire contenu du fichier
int octet;
while((octet = input.read()) != -1)
writer.write(octet);
Trés mauvaise idée de mélanger des I/O en mode octet et en mode
caractére, surtout quand on utilise des buffers. Utilisez plutôt un
encodage binaire d'une chaîne de caractère (writeUTF ou writeStringn
ou writeObject).
Servlet: //Recevoir fichier wav try { InputStream input = request.getInputStream(); //Lire nom du fichier BufferedReader entree = new BufferedReader(new InputStreamReader(input)); File file = new File("/var/www/html/phpBB2/audio/" + (String) entree.readLine()); FileOutputStream writer = new FileOutputStream(file); //Lire contenu du fichier int octet; while((octet = input.read()) != -1) writer.write(octet);
Trés mauvaise idée de mélanger des I/O en mode octet et en mode caractére, surtout quand on utilise des buffers. Utilisez plutôt un encodage binaire d'une chaîne de caractère (writeUTF ou writeStringn ou writeObject).
HTH,
insitu.
kenlet
Trés mauvaise idée de mélanger des I/O en mode octet et en mode caractére, surtout quand on utilise des buffers. Utilisez plutôt un encodage binaire d'une chaîne de caractère (writeUTF ou writeStringn ou writeObject).
HTH,
insitu.
Merci beaucoup! J'ai remplacé le tout par des Data***Stream et tout fonctionne à merveille! Je ne mélangerai plus à l'avenir!
Trés mauvaise idée de mélanger des I/O en mode octet et en mode
caractére, surtout quand on utilise des buffers. Utilisez plutôt un
encodage binaire d'une chaîne de caractère (writeUTF ou writeStringn
ou writeObject).
HTH,
insitu.
Merci beaucoup! J'ai remplacé le tout par des Data***Stream et tout
fonctionne à merveille!
Je ne mélangerai plus à l'avenir!
Trés mauvaise idée de mélanger des I/O en mode octet et en mode caractére, surtout quand on utilise des buffers. Utilisez plutôt un encodage binaire d'une chaîne de caractère (writeUTF ou writeStringn ou writeObject).
HTH,
insitu.
Merci beaucoup! J'ai remplacé le tout par des Data***Stream et tout fonctionne à merveille! Je ne mélangerai plus à l'avenir!