orsen成长录

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  3 随笔 :: 2 文章 :: 0 评论 :: 0 Trackbacks

Struts实现文件上传
---------------------------单文件--------------------------------------
-----jsp页面 一定要加入enctype和method为post

1<html:form action="/fileUpLoad" method="post" enctype="multipart/form-data">  
2    FileName: <html:text property="filename" /><br>    
3    File:<html:file property="file"/><br>
4        <html:submit />
5</html:form>
-----form中包含个文件属性
public class FileUpLoadForm extends ActionForm {
    
private String filename;
    
private FormFile file; //这个要记住,这是Struts把文件给封装了。
    public String getFilename() {
        
return filename;
    }

    
public void setFilename(String filename) {
        
this.filename = filename;
    }

    
public FormFile getFile() {
        
return file;
    }

    
public void setFile(FormFile file) {
        
this.file = file;
    }
    
}
----action中要用二进制来操作文件。如果要写入数据库的话,其实也不太难,用到PreparedStatement进行操作。只贴出来主要代码,部分省略。
FileUpLoadForm files = (FileUpLoadForm)form;
    String filename 
= files.getFilename();
    String realname 
= files.getFile().getFileName();
    System.out.println(
"用户文件名:" +filename + "       真实文件名:" +realname);
    
byte[] bytes= files.getFile().getFileData();
    OutputStream out 
= new FileOutputStream("c://"+realname);
    out.write(bytes);
    out.flush();
    out.close();

--改进形式
    byte[] bytes= new byte[2048]; //每次都2M的读写
    InputStream in = files.getFile().getInputStream();
    OutputStream out 
= new FileOutputStream("c://"+realname);
    
int i = 0;
    
while( (i = in.read(bytes, 02048)) != -1){
        out.write(bytes);
    }

    out.flush();
    out.close();
-------------------------------多文件-----------------------------------
本人思路是通过不同的表单属性的名字来区分,和一般从form给vo赋值一样,取一个判断一个,
但是可以吧保存上传的文件操作 可以封装成一个类或者方法,达到重用。
posted on 2009-09-23 20:02 Orsen 阅读(91) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: