【问题标题】:uploaded file not saved to the webcontent directory上传的文件未保存到 webcontent 目录
【发布时间】:2012-04-06 20:57:27
【问题描述】:

我正在使用 Eclipse IDE 开发和应用程序。我的应用程序具有文件上传功能。

我能够实现如何上传文件并保存它。但问题是上传的文件没有存储到我的动态网络项目目录中。

上传的文件获取存储到我的服务器目录,.metadata 文件夹具有路径

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

我想将我上传的文件夹存储到我的 Webcontent 文件夹中,该文件夹具有像 WebContent/upload/images 这样的图像文件夹的上传文件夹。

毫无疑问,我可以查看图像文件,但我想要的路径只是上面的。 下面是我用来存储上传文件的代码

@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();
    }

请建议我如何将上传到我的 WebContent 的文件存储在带有图像文件夹的上传文件夹中。我上面的代码运行良好只是指定路径存在一些问题。

【问题讨论】:

    标签: java spring-mvc file-upload


    【解决方案1】:

    您是否尝试过更改 outputStream 的目的地?

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

    代替request.getRealPath("") 放置一个absolute 目的地或使用ClassPath。例如:

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

    【讨论】:

    【解决方案2】:

    论坛成员

    现在我可以成功上传文件了,但是文件会存储到服务器上的部署目录中。

    我删除项目并将项目重新部署到我的 Tomcat 服务器 6.0 后,我上传的所有文件都会从中删除。

    我在 Tomcat 服务器 6.0 中使用 JAVA 作为我的服务器端技术。

    【讨论】:

      【解决方案3】:

      我能够成功上传文件,但文件被存储到服务器上的部署目录中。

      一旦我删除项目并将项目重新部署到我的 Tomcat 服务器 7.0,我上传的所有文件都会从中删除。

      我在 Eclipse IDE 中使用 JAVA 和 JSF 作为我的服务器端技术和 Tomcat 服务器 7.0

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-01
        相关资源
        最近更新 更多