2009-06-12 5 views
0

J'ai besoin de télécharger un fichier en utilisant Apache fileupload avec ProgressListener mais en même temps que j'ai besoin d'afficher la barre de progression pour l'état de téléchargement.Aide pour le téléchargement de fichiers en Java/J2EE

Exigence réelle est que j'ai juste besoin d'analyser un fichier XML local analyser le xml dans les objets appropriés et les mettre dans la base de données. Ai-je vraiment besoin de télécharger le fichier sur le serveur pour le faire analyser. Comme je reçois l'exception comme le fichier introuvable sur le serveur distant alors qu'il fonctionne bien sur mon m/c local.

Une aide rapide serait appréciée.

Merci d'avance !!!

Répondre

1

Si vous avez accès au côté serveur, je conseille de déboguer le processus de téléchargement. L'exception suggère que vous souhaitiez ouvrir le fichier sur le serveur en fonction du nom de fichier téléchargé. Sur votre machine locale, cela fonctionne, car il fonctionne sur le même système de fichiers. Du côté du serveur, Apache FileUpload reçoit des données binaires, qui doit être extrait du flux de données de demande:


@Override 
protected void service(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
    if (ServletFileUpload.isMultipartContent(request)) { 
    FileItemFactory factory = new DiskFileItemFactory(Integer.MAX_VALUE, null); 
    ServletFileUpload upload = new ServletFileUpload(factory); 
    List items = upload.parseRequest(request); 
    for (FileItem item : items) { 
     byte[] data = item.get(); 
     // do something with the binary data 
    } 
    } else { 
    System.err.println("Not a multipart/form-data"); 
    } 
} 

Et vous avez besoin du formulaire pour être:

 
<form name='frm' method="POST" action='UploadServlet' 
id="frm" enctype="multipart/form-data">
0

D'après votre description, il On dirait que votre servlet essaie de lire le fichier à partir du système de fichiers lui-même, en fonction du nom de fichier soumis dans le formulaire. Cela ne fonctionnera pas si le servlet s'exécute sur une machine différente de l'emplacement du fichier.

Assurez-vous que votre servlet récupère le contenu du fichier à partir de l'API fileupload et non du système de fichiers local.

Questions connexes