0

ユーザーがファイルを選択すると、アップロード中にユーザーが入力した別の名前でフォルダー (ProjectConfig ファイルに既に設定されているパス) に保存されます。これが私のサーブレットのコードです。

new ProjectConfig(); // For setting path for storing image 
    String dealerGalleryPath = ProjectConfig.get("dealergallery");
    DiskFileItemFactory factory = new DiskFileItemFactory();
    int locationid=2;
    ServletFileUpload upload = new ServletFileUpload(factory);
    String fileName = "";
    try
    {
        java.io.File fnew = null;
        //System.out.println(getServletContext().getRealPath("/images"));

        List fileItems = upload.parseRequest(request);

        Iterator i = fileItems.iterator();

        while ( i.hasNext () ) 
        {
            FileItem fi = (FileItem)i.next();
            if ( !fi.isFormField () )   
            {
                // Get the uploaded file parameters
                String fieldName = fi.getFieldName();
                //System.out.println("Field Name is.."+fieldName);
                fileName = fi.getName();
                if(fi.getName() != null && fi.getName().trim().length() != 0)
                {
                //System.out.println("File Name is.."+fileName);

                String realWebPath = dealerGalleryPath+locationid+"/"+fi.getName();

                fnew = new java.io.File(realWebPath); // **What to do here to change name of file??**
                fi.write(fnew);
                System.out.println("Success");
                //commonutil.setProductimage(fi.getName());
                }
            }
        }
        System.out.println("fileName::"+fileName);
        request.setAttribute("ImageName", fileName);
        RequestDispatcher rd = request.getRequestDispatcher("/jsp/ImageTesting.jsp");
        rd.forward(request, response);
    }catch(Exception e)
    {
        e.printStackTrace();
    }

このサイトの質問を一通り調べましたが、関連する回答が見つかりません。前もって感謝します

4

1 に答える 1

0

次のコードは私のウェブサイトで正常に動作します:

filePath = "upload/"; // DIRECTORY IN THE ROOT OF YOUR WEBSITE.
fileName = fi.getName(); // ORIGINAL FILENAME (YOU DONT WANT IT).
file = new File( filePath + "newname" ); // NEW FILE WITH NEW NAME.
try { fi.write( file ); } // WRITES ORIGINAL FILE INTO NEW FILE.
catch ( Exception ew ) { /* HANDLE ERROR HERE */ }

あなたの質問は: //ファイルの名前を変更するためにここで何をすべきか?? そこでは何も変更しませんが、コードの上の 2 行で、必要な新しい名前の "fi.getName()" を変更するだけです。

于 2014-05-16T20:25:32.020 に答える