日期:2014-05-19  浏览次数:20758 次

Fileupload文件上传在Chrome下获取不到完整路径
Fileupload文件上传在Chrome下获取不到完整路径,但是在IE下面没有问题,String fileName = item.getName();得到的只是文件的名称。文件上传代码如下:

 
Java code
       // 解析 request,判断是否有上传文件
        boolean isMultipart = ServletFileUpload.isMultipartContent(request);
        if (isMultipart) {
            // 创建磁盘工厂,利用构造器实现内存数据储存量和临时储存路径
            String tempdir = request.getRealPath("/Attachment/temp");
            DiskFileItemFactory factory = new DiskFileItemFactory(1024 * 4, new File(tempdir));
            // 设置最多只允许在内存中存储的数据,单位:字节
            // factory.setSizeThreshold(4096);
            // 设置文件临时存储路径
            // factory.setRepository(new File("D:\\Temp"));
            // 产生一新的文件上传处理程式
            ServletFileUpload upload = new ServletFileUpload(factory);
             // 设置路径、文件名的字符集
            upload.setHeaderEncoding("UTF-8");
            // 设置允许用户上传文件大小,单位:字节
            upload.setSizeMax(1024 * 1024 * 100);
            // 解析请求,开始读取数据
            // Iterator<FileItem> iter = (Iterator<FileItem>) upload.getItemIterator(request);
            // 得到所有的表单域,它们目前都被当作FileItem
            List fileItems = upload.parseRequest(request);  //FileItem
            // 依次处理请求
            Iterator iter = fileItems.iterator(); //FileItem
            while (iter.hasNext()) {
                FileItem item = (FileItem) iter.next();
                if (item.isFormField()) {
                    // 如果item是正常的表单域
                    String name = item.getFieldName();
                    String value = item.getString("UTF-8");
                    System.out.println("表单域名为:"+name+"表单域值为:"+value);
                } else {
                    // 如果item是文件上传表单域
                    // 获得文件名及路径
                    String fileName = item.getName();
                    if (fileName != null) {
                        // 如果文件存在则上传
                        //String fullName = tempdir+"/"+item.getName();
                        File fullFile = new File(fileName);
                        if (fullFile.exists()) {
                            String targetDirectory = request.getRealPath("/Attachment");
                            String path = targetDirectory+"/" + fullFile.getName();
                            File fileOnServer = new File(path);
                            item.write(fileOnServer);
                            System.out.println("文件" + fileOnServer.getName() + "上传成功");
                        }
                    }
                }
            }
        }



------解决方案--------------------
在火狐下也不能取到,IE下能取到,你是需要做预览这个功能吧,我们都是上传到服务器之后在回写路径预览的