Struts實現上傳下載

1. 上傳
 
   userAdd.jsp
<html:form action="user.do" method="post" enctype="multipart/form-data">
------------------------
<tr>
          <td>相片:</td>
          <td><html:file property="pic"></html:file></td> 
 </tr>
 
   UserAction.java
  public ActionForward add(ActionMapping mapping, ActionForm form,
      HttpServletRequest request, HttpServletResponse response) {
    UserForm userForm = (UserForm) form;// TODO Auto-generated method stub
    String username = userForm.getName();
    String userpass = userForm.getPassword();
    FormFile pic = userForm.getPic();
    String url = "E:\\UserPic\\"+pic.getFileName();
    if(pic != null){
      try {
        FileOutputStream fos = new FileOutputStream(url);
        fos.write(pic.getFileData());
        fos.flush();
        fos.close();
      } catch (FileNotFoundException e) {
        e.printStackTrace();
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
    User user = new User();
    user.setName(username);
    user.setPassword(userpass);
    user.setPic(pic.getFileName());
    userService.save(user);

    return mapping.findForward("success");
  }
 
    success.jsp
  <logic:iterate id="user" name="clUsers">
        <tr>
          <td>
            <bean:write name="user" property="name" />
          </td>
          <td>
            <bean:write name="user" property="password" />
          </td>
          <td>
            <html:link href="/ssh2/user.do?methodCode=downLoad&filePath=${user.pic}">下載</html:link>
            
          </td>
          <td>
            <html:multibox property="multibox">${user.id}</html:multibox>
          </td>
        </tr>
      </logic:iterate>
 
 
2 . 下載
 
     UserAction.java
  public ActionForward downLoad(ActionMapping mapping,ActionForm form, HttpServletRequest request,HttpServletResponse response) throws UnsupportedEncodingException{
    
    String fileName = request.getParameter("filePath");
    //String fileName = new String(fileName1.getBytes("ISO-8859-1"),"GBK");//處理URL傳遞中文時產生亂碼
    //System.out.println("fileName++++++++++"+fileName);
    String filePath = "E:\\UserPic\\"+fileName;
    File file = new File(filePath);
    try {
      FileInputStream fis = new FileInputStream(file);
      BufferedInputStream bis = new BufferedInputStream(fis);
      OutputStream os = response.getOutputStream();
      BufferedOutputStream bos = new BufferedOutputStream(os);
      fileName = URLEncoder.encode(fileName,"UTF-8");//這裏是GBK的話,fileName將是%CE%C4%B1重中形式
      //fileName = new String(fileName.getBytes("UTF-8"),"GBK");
      System.out.println("fileName"+fileName);
        
      response.reset();
      response.setContentType("UTF-8");
      response.setContentType("Application/x-msdownload");
      response.setHeader("Content-Disposition", "p_w_upload;fileName="+fileName);
      response.setHeader("Content-Length", String.valueOf(bis.available()));
        
      int bytesRead = 0;
      byte[] buffer = new byte[1024];
      while((bytesRead = bis.read(buffer))!= -1){
        bos.write(buffer,0,bytesRead);
      }
      bos.flush();
                                                 bos.close();
      bis.close();
      os.close();
      fis.close();
    } catch (FileNotFoundException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    
    return null;
  }
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章