struts自己可以实现上传,spring也有上传下载的jar包,自己百度一下

解决方案 »

  1.   

    struts就支持上传下载。我以前也做过邮件系统。。
    但是附件一般都不存数据库的,数据库只是存附件路径private String fileDesc;
    private File file;
    private String fileFileName;// 命名要规范,前面是所上传文件后面是FileName,表示上传文件名
    private String fileContentType;// 同上上传文件类型
    //getter and setter
    public String execute() {
    // 取到服务器上传文件存放的路径
    String path = ServletActionContext.getServletContext().getRealPath(
    "/Files/");
    // 取到上传文件的完整路径
    String FilePath = path + File.separator + fileFileName;
    InputStream is = null;
    OutputStream os = null;
    try {
    is=new FileInputStream(file);
    os=new FileOutputStream(FilePath);
    byte[] b=new byte[1024];
    int len=0;
    while((len=is.read(b))!=-1){
    os.write(b,0,len);
    os.flush();
    }
    is.close();
    os.close();
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    return "success";
    }下载简单
      

  2.   

    上传代码参考:http://gemini.iteye.com/blog/67712
    一般的附件或者图片的处理方案:
    1、可以把附件存到服务器上,然后把路径存到数据库。下次从数据库拿到指定路径的文件即可。
    2、以二进制直接把文件存到数据库。
      

  3.   

    http://gemini.iteye.com/blog/677121、可以把附件存到服务器上,然后把路径存到数据库。下次从数据库拿到指定路径的文件即可。
    2、以二进制直接把文件存到数据库。 
      

  4.   


    真的不建议把文件直接放到数据库里,库里只存文件路径就好。
    我之前做过,在action里把文件上传到FTP上,写入读取都要先登录FTP,感觉比直接存到服务器的安全性高些。Good Luck!
      

  5.   

    http://gemini.iteye.com/blog/67712
    参考地址
      

  6.   

    用smartupload,很简单就实现上传了
    下载更简单了,网上搜,很多例子。。
      

  7.   

    用jspsmartupload实现将文件上传到服务器
                //定义SmartUpload对象
                SmartUpload upload = new SmartUpload(); 
                //初始化
                upload.initialize(this.getServlet(), request, response);
                //上传文件
                upload.upload();
                //获取上传文件中的第一个
                SmartFile myFile = upload.getFiles().getFile(0);
                //取得文件名
                String filename = myFile.getFileName();
                //判断是否上传了,没有则返回上传页面
                if(filename.length()==0){
                    request.setAttribute("msg", "请选择要上传的文件!");
                    return mapping.findForward("imprt"); 
                } else{
                    //在服务器上创建存储上传文件的路径
                      String url=this.class.getResource("/").toString();
                    int lastIndex=url.length()-16;
                    String filePath=url.toString().substring(6,lastIndex)+"upload/";
                    File f=new File(filePath);
                    f.mkdirs();
                    //存储,SAVEAS_PHYSICAL以操作系统的根目录为文件根目录另存文件
                    myFile.saveAs(filePath+filename, myFile.SAVEAS_PHYSICAL);
                    request.setAttribute("filePath",filePath+filename );
                    //保存文件扩展名
                    request.setAttribute("fileExt",myFile.getFileExt() );
                }
      

  8.   

    可以用专门的大附件上传控件。比如QQ邮箱中的大附件上传功能就是用控件来实现的。还有115网盘,DBank(华为网盘)。现在网上已经有了比较成熟的HTTP断点续传控件了。所以别说上传100MB的文件,就算是10G的文件也行。
      

  9.   

    经测试发现,smartupload有严重的内存泄露。如果上传频繁会导致服务器内存极剧上升,并在到达某一个临界点时崩掉~!强烈建议不要使用这个组件。可以用commons-fileupload
      

  10.   

    常用的两种上传与下载组件(如jspSmartUpload与commons-fileUpload)拉实现。
       应用Struts框架实现文件上传无须添加JAR包,使用<html:file>标签生成<input type=file>元素来实现。具体上网搜一下。
       使用Spring的话其文件上传功能是通过Struts提供的commons-fileupload组件来实现。
    具体代码操作网上搜。
      
      

  11.   

    创建一个properties文件可以设置上传大小,还有临时位置
      

  12.   

    在struts2中,可以设置允许上传文件的大小,总文件的大小
      

  13.   

    struts2框架用来上传下载文件,HIBERNATE存数文件路径即可吧。struts2上传文件:package s2action;import java.io.File;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.Date;import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.struts2.ServletActionContext;import Copackage.Socket.SendData;import com.opensymphony.xwork2.ActionSupport;
    //struts2接收前台文件上传控件方法
    public class upuserpicaction  extends ActionSupport{
    private static final long    serialVersionUID    = 742220866388022377L;    
     private File filepic;  // 用户上传的文件    这里名字需跟前台控件的name一致
     private String filepicFileName; // 上传文件的文件名
     private String filepicContentType;// 上传文件的类型
     private String description;// 用户的描述
     /*     * SingleFileUploadAction的属性的getter和setter办法     */
     public File getFilepic(){
     return filepic;    
     }   
     public void setFilepic(File filepicFile){
     this.filepic = filepicFile;    
     }    
     public String getFilepicFileName(){
     return filepicFileName;
     }
     public void setFilepicFileName(String filepicFileName){
     this.filepicFileName = filepicFileName;    
     }    
     public String getFilepicContentType(){ 
      return filepicContentType;    
     } 
     public void setFilepicContentType(String filepicContentType){     
     this.filepicContentType = filepicContentType;   
     } 
     public String getDescription(){
     return description;    
     }   
     public void setDescription(String description){ 
     this.description = description;    
     } 
     



    public void upload()throws Exception { 
     HttpServletRequest request=ServletActionContext.getRequest();
     HttpServletResponse response = ServletActionContext.getResponse();
     PrintWriter out = null;
     try {
     out = response.getWriter();
    } catch (IOException e) {
     e.printStackTrace();
    }
     String filename = request.getParameter("userid");
    try{
    if(!"".equals(filename)){

    File file = filepic;
    int nPos = getFilepicFileName().lastIndexOf(".");
    if(nPos > 0){
    String savepath = request.getRealPath("/AffixFiles\\UserPic")+"/".replace("\\", "/"); 
    String sname = getFilepicFileName().substring(nPos);
    String filepath = savepath +"pic"+ filename + sname;
    File fdir = new File(savepath);
    if(!fdir.exists())
    fdir.mkdirs();
    File ffile = new File(filepath);
    if(!ffile.exists())
    ffile.delete();
     File savedFile = new File(filepath);// 上传文件存放位置 
     filepic.renameTo(savedFile);// 将上传文件复制到指定文件   
    String InXml = "[" + request.getRemoteAddr() + "].[0.0." + filename + ".0.0.0]SetValue(USERPIC)(pic" + filename + sname+ ")";
    String OutXml= "";
    //转发服务处理
    SysSocket ts = new SysSocket();
    try{
    OutXml = ts.send(InXml);
    }catch(Exception ex){
     OutXml = "1;" + ex.getMessage();
    }

    }
    out.write("{success:true,msg:'成功'}");
    }
    }catch(Exception ex){
    out.write("{success:true,msg:'" + ex.getMessage() + "'}");

     }
    }
      

  14.   

    上传下载在struts2文档里搜索upload和download就能找到,
    数据库里存储path熟悉就可以了,真正的文件存到硬盘里即可