日期:2014-05-17  浏览次数:20697 次

高手给改改错,谢谢! 文件上传远程服务器。
两台电脑(A 客户端,B 服务器)

我现在需要 在B服务器上运行程序, 在A客户端,通过jsp页面,点击上传excel文件,解析插入到B服务器的数据库中。

我把这段代码放到B服务器上运行,在A客户端页面 点击上传的时候,报错找不到文件。保存路径 那部分服务器的路径该怎么写?这段代码是不是有问题?不该这么写?

Java code

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {        
    
            //创建硬盘factory
            FileItemFactory factory = new DiskFileItemFactory();
            
            //工厂factory实例化上传组件
            ServletFileUpload upload = new ServletFileUpload(factory);
            
            //从REQUEST获取所有上传域的列表
            List items = null;
            try {
                items = upload.parseRequest(request);
            } catch (FileUploadException e) {
                System.out.println("获取文件失败..");
            }
            
            //遍历得到所有文件
            Iterator iter = items.iterator();            
            while (iter.hasNext()) {
                //if hasnext
                FileItem item = (FileItem) iter.next();
                
            
                if (item == null || item.isFormField()) {
                    
                    String name = item.getFieldName();
                    String value = item.getString("GBK");
                    System.out.println(name + "=" + value);
                    
                } else {
                    
                    //保存路径
                    String uploadPath = "\\home\\dev\\apache-tomcat-6.0.35\\excel.xls";                
                    File uploadedFile = new File(uploadPath );
                
                    try {
                        //写入文件
                        item.write(uploadedFile);
                    } catch (Exception e) {
                        System.out.println("文件写入失败 ");
                    }
    
                }
            }
    
        //解析并插入数据库
       //  List<Excel2003Bean> list = ino.InsertInto(upLoaderPath);
         
        
        request.getRequestDispatcher("/app/fileUpload.jsp").forward(request,
                response);
    }




------解决方案--------------------
你找一个servlet上传文件的代码,测试通过后你再做添加到数据库的操作。这种代码网上很多
------解决方案--------------------
DiskFileItemFactory factory = new DiskFileItemFactory();
// 设置内存缓冲区,超过后写入临时文件
factory.setSizeThreshold(10240000); 
// 设置临时文件存储位置
String base = this.getServletContext().getRealPath("/")+"files";
System.out.println("--------base----------------->"+base);
File file = new File(base);
System.out.println(file.getName());
System.out.println("------------>"+file.exists());
if(!file.exists())
file.mkdirs();
factory.setRepository(file);
ServletFileUpload upload = new ServletFileUpload(factory);
// 设置单个文件的最大上传值
upload.setFileSizeMax(10002400000l);
// 设置整个request的最大值
upload.setSizeMax(10002400000l);
upload.setHeaderEncoding("UTF-8");

try {
List<?> items = upload.parseRequest(request);
System.out.println("itemsSize--------------->"+items.size());
FileItem item = null;
String fileName = null;
for (int i = 0 ;i < items.size(); i++){
item = (FileItem) items.get(i);
fileName = base + File.separator + item.getName();
System.out.println("--------fileName-------->"+fileName);
System.out.println("------------------------>"+item.getNam