我现在要做一个JSP的具有上传和下载功能的模块,不知怎么做?能告诉一下具体的思路吗?我义安装tomcat \ sqlserver2000 \myeclipse 

解决方案 »

  1.   

       这种问题建议你先去 Google ,baidu,搞不懂的再来这里。
      

  2.   

    http://www.pudn.com/downloads158/sourcecode/java/jsp/detail708336.html
    自己去下个看看吧!
    这里是专业的地方哈哈!不适合贴代码!嘎嘎!
      

  3.   

    jsp上传和下载和 java io 有关
    先弄懂这个就很快了
      

  4.   

    纯jsp上传
    package com.accp.uploaddemo.web.servlet;import javax.servlet.http.HttpServlet;
    import java.io.IOException;
    import java.io.PrintWriter; import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import org.apache.commons.fileupload.*;
    import java.util.*;
    import java.util.regex.*;
    import java.io.*;
    import org.apache.commons.fileupload.servlet.*;
    import org.apache.commons.fileupload.disk.DiskFileItemFactory; public class  UploadServlet extends HttpServlet { 
     //BLOB  @Override
     public void init(ServletConfig config) throws ServletException {
      this.config = config;
     }  private ServletConfig config = null;
     
       private File tempPath = new File("D:\\data\\temp\\"); // 用于存放临时文件的目录  public void destroy() {
      config = null;
      super.destroy();
     }  
     public void doPost(HttpServletRequest req, HttpServletResponse res)
       throws ServletException, IOException {
      int id = -1;
      
      String uploadPath = config.getInitParameter("uploadPath"); // 用于存放上传文件的目录
      
      res.setContentType("text/html; charset=GB2312");
      PrintWriter out = res.getWriter();
      System.out.println(req.getContentLength());
      System.out.println(req.getContentType());
      DiskFileItemFactory factory = new DiskFileItemFactory();
      // maximum size that will be stored in memory
      factory.setSizeThreshold(4096);
      // the location for saving data that is larger than getSizeThreshold()
      factory.setRepository(tempPath);   ServletFileUpload upload = new ServletFileUpload(factory);
      // maximum size before a FileUploadException will be thrown
      upload.setSizeMax(90000000);//设置可上传文件最大值
      try {
       List fileItems = upload.parseRequest(req);
       // assume we know there are two files. The first file is a small
       // text file, the second is unknown and is written to a file on
       // the server
       Iterator iter = fileItems.iterator();    // 正则匹配,过滤路径取文件名
       String regExp = ".+\\\\(.+)$";    // 过滤掉的文件类型
       String[] errorType = { ".exe", ".com", ".cgi", ".jsp" };
       Pattern p = Pattern.compile(regExp);
       while (iter.hasNext()) {
        FileItem item = (FileItem) iter.next();
        if(item.isFormField()) {
         if(item.getFieldName().equals("id")) {
          id = Integer.parseInt(item.getString());
         }
        }
        // 忽略其他不是文件域的所有表单信息
        if (!item.isFormField()) {
         String name = item.getName();
         long size = item.getSize();
         if ((name == null || name.equals("")) && size == 0)
          continue;
         Matcher m = p.matcher(name);
         boolean result = m.find();
         if (result) {
          for (int temp = 0; temp < errorType.length; temp++) {
           if (m.group(1).endsWith(errorType[temp])) {
            throw new IOException(name + ": wrong type");
           }
          }
          try {        // 保存上传的文件到指定的目录        // 在下文中上传文件至数据库时,将对这里改写
           String fileName=name.substring(name.lastIndexOf("\\")+1);
           item.write(new File(uploadPath +fileName));//保存上传文件(虽要什么类型也在这里规定)        out.print(name + "  " + size + "<br>");
          } catch (Exception e) {
           out.println(e);
          }      } else {
          throw new IOException("fail to upload");
         }
        }
       }
      } catch (IOException e) {
       out.println(e);
      } catch (FileUploadException e) {
       out.println(e);
      }  }   }
    纯jsp下载
    package com.accp.uploaddemo.web.servlet;import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.OutputStream;import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;public class DownloadServlet extends HttpServlet {
    ServletConfig config=null;
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    //被下载的文件目录
    String downloadFilePath=config.getInitParameter("downloadFilePath");
    //关联输出流
    OutputStream o=response.getOutputStream();
    //需被下载的文件名
    String downloadFileName="sshDemo-y2t120.rar";
    //读入文件缓冲
    byte b[]=new byte[1024];
    File fileload=new File(downloadFilePath,downloadFileName);
    //弹出下载对话框
    response.setHeader("Content-disposition", "attachment:filename="+downloadFileName);
    //关联下载格式
    String ext=downloadFileName.substring(downloadFileName.lastIndexOf(".")+1);
    if(ext.equalsIgnoreCase("doc")||ext.equalsIgnoreCase("doc")){
    response.setContentType("application/msword");
    }
    else if(ext.equalsIgnoreCase("jpg")||ext.equalsIgnoreCase("jpeg")||ext.equalsIgnoreCase("jpe")){
    response.setContentType("image/jpeg");
    }
    else if(ext.equalsIgnoreCase("xls")){
    response.setContentType("application/vnd.ms-excel");
    }
    else if(ext.equalsIgnoreCase("rar")||ext.equalsIgnoreCase("zip")){
    response.setContentType("application/x-tar");
    }
    else{
    response.setContentType("application/msword");
    }
    long fileLength=fileload.length();
    String length=String.valueOf(fileLength);
    //设置下载文件大小
    response.setHeader("Content-length",length);
    FileInputStream in=new FileInputStream(fileload);
    int n=0;
    while((n=in.read(b))!=-1){
    o.write(b,0,n);
    }
    } @Override
    protected void doPost(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
    // TODO Auto-generated method stub
    doGet(arg0,arg1);
    } @Override
    public void init(ServletConfig arg0) throws ServletException {
    // TODO Auto-generated method stub
    this.config=arg0;
    }

    }
      

  5.   

    用struts1x做上传
    /*
     * Generated by MyEclipse Struts
     * Template path: templates/java/JavaClass.vtl
     */
    package com.accp.uploaddemo.web.struts.action;import java.io.File;import java.io.ByteArrayOutputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    import java.util.Iterator;
    import java.util.List;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;
    import org.apache.commons.fileupload.FileUploadException;
    import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    import org.apache.commons.fileupload.servlet.ServletFileUpload;
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.upload.FormFile;import com.accp.uploaddemo.web.struts.form.UploadForm;/** 
     * MyEclipse Struts
     * Creation date: 08-20-2006
     * 
     * XDoclet definition:
     * @struts.action path="/upload" name="uploadForm" input="/form/upload.jsp" scope="request"
     */
    public class UploadAction extends Action {
    /*
     * Generated Methods
     */ /** 
     * Method execute
     * @param mapping
     * @param form
     * @param request
     * @param response
     * @return ActionForward
     * @throws IOException 
     */
    public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) throws IOException {
          
                response.setContentType("text/html; charset=GB2312");
                //获取提交表单
                UploadForm theForm = (UploadForm) form;  
                // 获取提交的文件
                FormFile file = theForm.getThefile();            // 获取提交文件名
                String fileName= file.getFileName();            //获取上传的文件类型
                String contentType = file.getContentType();                    //获取上传文件大小
                String size = (file.getFileSize() + " bytes");            //指定文件上传目录
                 File tempPath = new File("D:\\data\\temp\\",fileName); 
                try {
                    //retrieve the file data
                   //引入上传文件流
                    InputStream stream = file.getInputStream();
     
                        //输出并指定文件
                        OutputStream bos = new FileOutputStream(tempPath);
                        //读入的实际字节数
                        int bytesRead = 0;
                        //设置读入缓冲
                        byte[] buffer = new byte[8192];
                        //开始读入
                        while ((bytesRead = stream.read(buffer, 0, 8192)) != -1) {
                         //写入文件
                            bos.write(buffer, 0, bytesRead);
                        }
                        //关闭输出流
                        bos.close();
                        
                   
                    //关闭输入流
                    stream.close();
                }
                catch (FileNotFoundException fnfe) {
                    return null;
                }
                catch (IOException ioe) {
                    return null;
                }            //关闭sturts的FormFile临时文件
                file.destroy();            //return a forward to display.jsp
                return mapping.findForward("success");
                   
    }
     
    }
    ------------------------
    struts1x的上传actionform
    /*
     * Generated by MyEclipse Struts
     * Template path: templates/java/JavaClass.vtl
     */
    package com.accp.uploaddemo.web.struts.form;import javax.servlet.http.HttpServletRequest;
    import org.apache.struts.action.ActionErrors;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.upload.FormFile;/** 
     * MyEclipse Struts
     * Creation date: 08-20-2006
     * 
     * XDoclet definition:
     * @struts.form name="uploadForm"
     */
    public class UploadForm extends ActionForm {
    /*
     * Generated Methods
     */ /** 
     * Method validate
     * @param mapping
     * @param request
     * @return ActionErrors
     */
    public ActionErrors validate(ActionMapping mapping,
    HttpServletRequest request) {
    // TODO Auto-generated method stub
    return null;
    } /** 
     * Method reset
     * @param mapping
     * @param request
     */
    public void reset(ActionMapping mapping, HttpServletRequest request) {
    // TODO Auto-generated method stub
    }
    protected FormFile thefile;
    public FormFile getThefile() {
    return thefile;
    }--------------------------
    struts1x下载
    package com.accp.uploaddemo.web.struts.action;import java.io.File;
    import java.io.FileInputStream;
    import java.io.OutputStream;import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;public class DownLoadAction extends Action {
    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
    // TODO Auto-generated method stub
    // 被下载的文件目录
    String downloadFilePath="D:\\data\\temp";
    //关联输出流
    OutputStream o=response.getOutputStream();
    //需被下载的文件名
    String downloadFileName="2007102783853632.jpg";
    //读入文件缓冲
    byte b[]=new byte[1024];
    File fileload=new File(downloadFilePath,downloadFileName);
    //弹出下载对话框
    response.setHeader("Content-disposition", "attachment:filename="+downloadFileName);
    //关联下载格式
    String ext=downloadFileName.substring(downloadFileName.lastIndexOf(".")+1);
    if(ext.equalsIgnoreCase("doc")||ext.equalsIgnoreCase("doc")){
    response.setContentType("application/msword");
    }
    else if(ext.equalsIgnoreCase("jpg")||ext.equalsIgnoreCase("jpeg")||ext.equalsIgnoreCase("jpe")){
    response.setContentType("image/jpeg");
    }
    else if(ext.equalsIgnoreCase("xls")){
    response.setContentType("application/vnd.ms-excel");
    }
    else if(ext.equalsIgnoreCase("rar")||ext.equalsIgnoreCase("zip")){
    response.setContentType("application/x-tar");
    }
    else{
    response.setContentType("application/msword");
    }
    long fileLength=fileload.length();
    String length=String.valueOf(fileLength);
    //输出设置下载文件大小
    response.setHeader("Content-length",length);
    FileInputStream in=new FileInputStream(fileload);
    int n=0;
    while((n=in.read(b))!=-1){
    o.write(b,0,n);
    }
    return null;
    }
    }
      

  6.   

    jspsmart是不是要从网上下载?安装?我已安装tomcat \ sqlserver2000 \myeclipse 
      

  7.   

    这种问题建议你先去 Google ,baidu,搞不懂的再来这里。
      

  8.   

    很简单嘛。楼上都给出了正解了。code也有。
      

  9.   

    jspsmart是不是要从网上下载?安装?我已安装tomcat \ sqlserver2000 \myeclipse 
      

  10.   

    给你个链接:http://blog.csdn.net/cloudgamer
    这里有你需要的内容,包括相应的实例,下载下来,在相关的硬盘建立文件夹即可。
    估计你会感兴趣的。
    看帖必回帖。
    注:楼上的代码为测试,无法知道。