简体   繁体   中英

uploaded file not saved to the webcontent directory

I am developing and application using eclipse IDE. My application has a file upload functionality.

I am able to achieve how to upload the file and also to save it. But the problem is that the file uploaded didn't get store to my dynamic web project directory.

The file uploaded get store to my server directory with .metadata folder having path

file:///E:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/

I want to store my uploaded folder to my Webcontent folder having upload folder having images folder like WebContent/upload/images .

No doubt I am able to view the image file but, the path i want is like above only. below code I am using to store the uploaded file

@RequestMapping(value = "/company/UploadFile.action", method = RequestMethod.POST)
    public @ResponseBody String uploadFile(FileUploadBean uploadItem, BindingResult result,HttpServletRequest request, HttpServletResponse response) {
        System.out.println("FILE UPLOAD ITEM SI SSLSL ::"+uploadItem);

        ExtJSFormResult extjsFormResult = new ExtJSFormResult();

        if (result.hasErrors()){
            for(ObjectError error : result.getAllErrors()){
                System.err.println("Error: " + error.getCode() +  " - " + error.getDefaultMessage());
            }

            //set extjs return - error
            extjsFormResult.setSuccess(false);

            return extjsFormResult.toString();
        }

        // Some type of file processing...
        System.err.println("-------------------------------------------");
        System.err.println("Test upload: " + uploadItem.getFile().getOriginalFilename());
        System.err.println("-------------------------------------------");

        try{

            MultipartFile file = uploadItem.getFile();
            String fileName = null;
            InputStream inputStream = null;
            OutputStream outputStream = null;
            if (file.getSize() > 0) {
                inputStream = file.getInputStream();
                /*if (file.getSize() > 10000) {
                    System.out.println("File Size:::" + file.getSize());
                    extjsFormResult.setSuccess(false);

                    return extjsFormResult.toString();
                }*/
                System.out.println("also path ::"+request.getRealPath("") + "/upload/images/");
                System.out.println("PATHI SIS SIS"+this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath());
                System.out.println("size::" + file.getSize());

                InetAddress addr = InetAddress.getLocalHost();
                byte[] ipAddr = addr.getAddress();

                System.out.println("HOST NAME"+request.getRealPath("ResourceMgt"));
                System.out.println("HOST ADDR"+addr.getHostAddress());
                System.out.println("HOST "+request.getRequestURI());
                System.out.println("HOST "+request.getRequestURL());

                fileName = request.getRealPath("") + "/upload/images/"
                        + file.getOriginalFilename();
                outputStream = new FileOutputStream(fileName);
                System.out.println("FILEN ANEM AND PATH IS ::"+fileName);
                System.out.println("fileName:" + file.getOriginalFilename());

                int readBytes = 0;
                byte[] buffer = new byte[40000];
                while ((readBytes = inputStream.read(buffer, 0, 40000)) != -1) {
                    outputStream.write(buffer, 0, readBytes);
                }

                companyservice.saveImages(file.getOriginalFilename(),fileName);

                outputStream.close();
                inputStream.close();
            }
        }catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }

        //set extjs return - sucsess
        extjsFormResult.setSuccess(true);

        return extjsFormResult.toString();
    }

please suggest me how can I store the file uploaded to my WebContent having upload folder with images folder. My above code is working perfectly Just there is some issue with specifying the path.

forum member

now I am able to upload the file successfully, but the file get stored to the deployed directory on the server.

As soon as I remove the project and redeployed the project to my Tomcat server 6.0 all the files I had uploaded gets deleted from that.

I am using JAVA as my server side technology with Tomcat server 6.0.

I am able to upload the file successfully, but the file get stored to the deployed directory on the server.

As soon as I remove the project and redeployed the project to my Tomcat server 7.0 all the files I had uploaded gets deleted from that.

I am using JAVA and JSF as my server side technology with Tomcat server 7.0 in Eclipse IDE

Have you tried to change the destination of the outputStream?

fileName = request.getRealPath("") + "/upload/images/"
+ file.getOriginalFilename();

Instead of request.getRealPath("") put an absolute destination or play with ClassPath . For example:

fileName = "/opt/tomcat/webapps/upload/images/"
+ file.getOriginalFilename();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM