jsp上传文件页面报无法解析的编译问题

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>


带进度条的文件上传

//此处需要加&nocache="+new Date().getTime(),否则将出现进度不更新的情况 function getProgress(){ var loader=new net.AjaxRequest("showProgress.jsp?nocache="+new Date().getTime(),deal_p,onerror,"GET"); } function onerror(){ alert("上传文件出错!"); } function deal_p(){ var h=this.req.responseText; h=h.replace(/\s/g,""); //去除字符串中的Unicode空白符 document.getElementById("progressPercent").style.display=""; //显示百分比 progressPercent.innerHTML=h+"%"; //显示完成的百分比 document.getElementById("progressBar").style.display="block"; //显示进度条 document.getElementById("imgProgress").width=h*(255/100); //显示完成的进度 } function deal(form){ form.submit(); //提交表单 timer=window.setInterval("getProgress()",500); //每隔500毫秒获取一次上传进度 }


 
 
请选择上传的文件:
注:文件大小请控制在50M以内。
 0%
 


upload.java

package com.wgh.servlet;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import java.io.InputStream;
import java.util.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

/**

  • @author administrator
    */
    public class UpLoad extends HttpServlet {

    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    String action = request.getParameter("action");
    if ("uploadFile".equals(action)) {
    this.uploadFile(request, response); // 上传文件
    }
    }

    public void uploadFile(HttpServletRequest request,
    HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html;charset=GBK");
    request.setCharacterEncoding("GBK");
    HttpSession session = request.getSession();
    session.setAttribute("progressBar", 0); // 定义指定上传进度的Session变量
    String error = "";
    int maxSize = 50 * 1024 * 1024; // 单个上传文件大小的上限
    DiskFileItemFactory factory = new DiskFileItemFactory(); // 基于磁盘文件项目创建一个工厂对象
    ServletFileUpload upload = new ServletFileUpload(factory); // 创建一个新的文件上传对象
    try {
    List items = upload.parseRequest(request);// 解析上传请求
    Iterator itr = items.iterator();// 枚举方法
    while (itr.hasNext()) {
    FileItem item = (FileItem) itr.next(); // 获取FileItem对象
    if (!item.isFormField()) {// 判断是否为文件域
    if (item.getName() != null && !item.getName().equals("")) {// 判断是否选择了文件
    long upFileSize = item.getSize(); // 上传文件的大小
    String fileName = item.getName(); // 获取文件名
    // System.out.println("上传文件的大小:" + item.getSize());
    if (upFileSize > maxSize) {
    error = "您上传的文件太大,请选择不超过50M的文件";
    break;
    }
    // 此时文件暂存在服务器的内存中
    File tempFile = new File(fileName);// 构造临时对象
    // String savePath=tempFile.getName();
    // //返回上传文件在客户端的完整路径名称
    // request.setAttribute("filename", savePath);
    File file = new File(request.getRealPath("/upload"),
    tempFile.getName()); // 获取根目录对应的真实物理路径

                    InputStream is = item.getInputStream();
                    int buffer = 1024; // 定义缓冲区的大小
                    int length = 0;
                    byte[] b = new byte[buffer];
                    double percent = 0;
                    FileOutputStream fos = new FileOutputStream(file);
                    while ((length = is.read(b)) != -1) {
                        percent += length / (double) upFileSize * 100D; // 计算上传文件的百分比
                        fos.write(b, 0, length); // 向文件输出流写读取的数据
                        session.setAttribute("progressBar", Math
                                .round(percent)); // 将上传百分比保存到Session中
                    }
                    fos.close();
                    Thread.sleep(1000); // 线程休眠1秒
                } else {
                    error = "没有选择上传文件!";
                }
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
        error = "上传文件出现错误:" + e.getMessage();
    }
    if (!"".equals(error)) {
        request.setAttribute("error", error);
        request.getRequestDispatcher("error.jsp")
                .forward(request, response);
    } else {
        request.setAttribute("result", "文件上传成功!");
        request.getRequestDispatcher("upFile_deal.jsp").forward(request,
                response);
    }
    

    }
    }

问题
java.lang.Error: 无法解析的编译问题:
无法解析导入 org.apache.commons.fileupload.disk
无法解析导入 org.apache.commons.fileupload.servlet
DiskFileItemFactory 无法解析为类型
DiskFileItemFactory 无法解析为类型
ServletFileUpload 无法解析为类型
ServletFileUpload 无法解析为类型

com.wgh.servlet.UpLoad.<init>(UpLoad.java:15)
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
java.lang.reflect.Constructor.newInstance(Constructor.java:423)
java.lang.Class.newInstance(Class.java:442)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:879)
org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:610)
org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1777)
java.lang.Thread.run(Thread.java:745)
求救

2个回答

我也刚刚遇到你的这个问题,是由Dyanmic Web Project版本问题造成的,新建项目选择2.5版本将代码原封不动码进去即可成功运行。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问