在localhost上工作的图像上传很好但在jsp中没有在服务器上工作

时间:2014-10-01 12:12:43

标签: java jsp jsp-tags

使用request.getRealPath()在localhost上进行图像上传工作正常但我们在服务器中使用的是

工作,因为服务器找不到指定的路径..图像无法显示..我怎么能解决这个问题。??

这是图片上传的代码:

           filePath =request.getRealPath("") + "\\img\\";                 
            System.out.println(filePath);
        String contentType = request.getContentType();

        if ((contentType.indexOf("multipart/form-data") >= 0)) 
        {
            DiskFileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload upload = new ServletFileUpload(factory);
            List fileItems = upload.parseRequest(request);
                   //  message=    fileItems.get(2).toString();



            Iterator i = fileItems.iterator();

            while (i.hasNext()) {
                FileItem fi = (FileItem) i.next();
                                 if(fi.isFormField())
                                 {
                                     message=fi.getString();
                                     System.out.println("message is  : "+message);
                                     bean.setEmp_id(Integer.parseInt(message));
                                 }
                if (!fi.isFormField()) {
                    String fieldName = fi.getFieldName();
                    System.out.println("field name"+fieldName);
                    fileName = fi.getName();




                    if (fileName.lastIndexOf("\\") >= 0) {
                        file = new File(filePath
                                + fileName.substring(fileName
                                        .lastIndexOf("\\")));

                    } else {
                        file = new File(filePath
                                + fileName.substring(fileName
                                        .lastIndexOf("\\") + 1));

                    }
                    fi.write(file);

1 个答案:

答案 0 :(得分:0)

getRealPath()给出绝对路径(在文件系统上),导致在调用参数中指定的文件。它以特定于OS的格式返回路径。

阅读request#getRealPath了解其文档。

同时建议使用servletRequest.getSession().getServletContext().getRealPath("/")代替servletRequest.getRealPath("/"),因为它已被弃用。

所以最好的方法是自己为服务器提供upload path,因为特定于操作系统的方法值可能无法访问返回的路径(权限)。

希望这会有所帮助!!