Javaは複数のファイルのアップロードを実現します(ファイルサイズ、ファイルタイプを検証します).

9615 ワード

アップロードはJava開発者ごとにマスターしなければなりません.ファイルのアップロードには多くの実現方法がありますが、実は大同小異です.ペンマンはここで私が慣れたファイルをアップロードする方法を紹介します.みんなは先にコードを見て、最後に私は私のソースコードを共有します.
  • 1、まず必要なjarカバンを準備します.
  • commons-fileupload-12.jar-common-i-o-1.4.jarは[(http://commons.apache.org/もちろん、私のプロジェクトのソースコードの中にもあります.
  • public static String fileUpload(HttpServletRequest request,HttpServletResponse response)throws Exception
    {
        //         
        String fileType = "mp3,mp4,video,rmvb,pdf,txt,xml,doc,gif,png,bmp,jpeg";
        //           (100M,   byte)
        int maxSize = 1024*1024*100;
        response.addHeader("Access-Control-Allow-Origin", "*");
        //        
        String savePath = request.getRealPath("/") + "save/";
        response.setContentType("text/html; charset=UTF-8");
        //    
        File uploadDir = new File(savePath);
        if ( !uploadDir.exists())
        {
           uploadDir.mkdirs();
        }
        if ( !uploadDir.canWrite())
        {
           return "         !";
        }
        DiskFileItemFactory factory = new DiskFileItemFactory();
        factory.setSizeThreshold(1024 * 1024); //       ,   1M
        factory.setRepository(uploadDir); //       
    
        ServletFileUpload upload = new ServletFileUpload(factory);
        upload.setHeaderEncoding("UTF-8");
    
        List items = upload.parseRequest(request);
        Iterator it = items.iterator();
        FileItem item = null;
        String fileName = "";
        String name = "";
        String extName = "";
        String newFileName = "";
        while (it.hasNext())
        {
            item = (FileItem)it.next();
    
            fileName = item.getName();
            if (null == fileName || "".equals(fileName))
            {
                continue;
            }
    
            //          
            if (item.getSize() > maxSize)
            {
                item.delete();
                JOptionPane.showMessageDialog(null, "        !   " + maxSize
                                                    / 1024 / 1024 + "M");
                return "        !   " + maxSize;
            }
    
            //          
            //            System.getProperties().getProperty("file.separator"))
            //      
            name = fileName.substring(fileName.lastIndexOf("\\") + 1,
                fileName.lastIndexOf("."));
            //       
            extName = fileName.substring(fileName.indexOf(".") + 1).toLowerCase().trim();
    
            //              
            if ( !Arrays.<String> asList(fileType.split(",")).contains(extName))
            {
                item.delete();
                JOptionPane.showMessageDialog(null, "       ,   " + fileType
                                                    + "   !");
                return "       ,   " + fileType
                                                    + "   !";
            }
            SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
            newFileName = name + df.format(new Date()) + "." + extName;
            File uploadedFile = new File(savePath, newFileName);
        item.write(uploadedFile);
        }
    
        return "success";
    }
    "fileUpload" method="post" enctype="multipart/form-data"> type="file" name="file" /> type="file" name="file" /> type="submit" value=" ">
    上のコードはもうokです.私のパラメータのいくつかは、ファイルのアップロードが許可されているサイズや、ファイルの種類など、書き込みが完了しています.設定ファイルに書いて、この設定ファイルを読んで、中のパラメータを得たほうがいいです.設定ファイルの中のパラメータも書いていませんが、意味が違っています.プログラマーとしては、他の人に便宜を提供しています.毎回変更したら、中のコードを使います.配置ファイルを変更してもいいです.これも私たちがスマート化する必要があります.
    もちろん、上记のコードはアップロードの机能だけです.下のソースコードを共有します.ソースの中には配置ファイルに书かれています.
    以下は私のソースコードを共有します.ファイルをアップロードします.
    問題があれば、皆さんはお互いに交流し、切磋琢磨します.