2011-12-15 3 views
0
public void execute(HttpServletRequest request) throws Exception { 
    DiskFileItemFactory factory = new DiskFileItemFactory(); 

    factory.setSizeThreshold(1*1024*1024*1024); //1 MB 
    /* 
    * Set the temporary directory to store the uploaded files of size above threshold. 
    */ 
    factory.setRepository(new File("c:\\temp")); 

    // Create a new file upload handler 
    ServletFileUpload upload = new ServletFileUpload(factory); 

    // Parse the request 
    List items = upload.parseRequest(request); 
    Iterator iter = items.iterator(); 

    while (iter.hasNext()) { 
     FileItem item = (FileItem) iter.next(); 
     if (item.isFormField()) { 
      InputStream uploadedStream = item.getInputStream(); 
      try { 
       File f = new File("C:\\temp\\index.jpg"); 
       item.write(f); 
       uploadedStream.close(); 
      } 
      catch (IOException e) { 
      } 
     } 
    } 

le formulaire html:apache fichier bibliothèque commune télécharger

<form enctype="multipart/form-data" method="POST" action="<%=request.getContextPath()%>/main?cmd=ci"> 
    <table class = "lineable"> 
     <tr> 
      <td><input type="file" name="file1"/></td> 
      <td><input type="submit" name="q" value="import"/></td> 
     </tr> 
    </table> 
</form> 

Quand je sauve en elle créer index.jpg mais écrit mot « importation » dans le fichier jpg dont la valeur du bouton d'envoi. Qu'est-ce qui ne va pas. Merci.

+0

'1 * 1024 * 1024 * 1024' est' 1 Go' pas '1 Mo' –

Répondre

0

Au moins un problème ici:

if(item.isFormField()){ 
    InputStream uploadedStream = item.getInputStream(); 
    ... 
} 

Si vous êtes à la recherche dans un champ de formulaire, pourquoi devriez-vous regarder son InputStream? Vous ne devriez être intéressé que par des éléments de champ non formels, c'est-à-dire des fichiers. Après une deuxième inspection, vous utilisez Commons IO, et vous n'avez même pas besoin de regarder son InputStream. Il suffit de nier le chèque et tout ira bien.

+0

cela a fonctionné quand je l'ai fait if (! Item.isFormField()) {...} – Elbek

+0

En fait, j'ai copié le code de quelque part , alors il n'a pas enregistré correctement, je ne pouvais pas trouver le "!" marque. Ça a marché. Merci – Elbek

Questions connexes