1.我想把上传的附件用JAVA流的方式写入到数据库里面,然后再来读取,请问有人这样做吗?
2.有什么办法能有效防止上传.exe之类的文件了。

解决方案 »

  1.   

    用CLOB类型的字段存储,CLOB字段最大支持4GB
      

  2.   

    ls的,那种方法好一点,我倒是没用clob存过
      

  3.   

    1.我想把上传的附件用JAVA流的方式写入到数据库里面,然后再来读取,请问有人这样做吗?
      可以将上传的附件作为二进制流写入到数据库里面。保存的时候用一个字段来存文件名称(至少需要文件扩展名称),用另一个字段来存文件体(二进制流)。
      在读取的时候,将文件体(二制流)以及文件名读取出来就可以了,读取时代码如下:
      
      //获得数据表内容(文件内容)
    String fileName = rs.getString(5);
    InputStream fileCtStr = rs.getBinaryStream(8);

    //实例文件对象,文件名
    File otfile = new File("D:\\EmailFile\\"+fileName);
    try
    {
    //实例文件输出流对象
    FileOutputStream fouts = new FileOutputStream(otfile);
    //实例字节数组缓冲对象(1KB)
    byte[] buffer = new byte[1024];
    int nowRead;
    //将文件内容写入文件
    while((nowRead=fileCtStr.read(buffer))!=-1)
    {
    fouts.write(buffer, 0, nowRead);
    }
    //关闭文件输出流对象
    fouts.close();
    } catch (FileNotFoundException e)
    {
    flag = false;
    e.printStackTrace();
    } catch (IOException e)
    {
    flag = false;
    e.printStackTrace();
    }
      2.有什么办法能有效防止上传.exe之类的文件了。
      防止上付.exe或者其它类型的文件名,可以去获取文件名的扩展名,但最好应该是要获取文件类型来作判断。
      

  4.   

    google mail好像是用的获取文件类型来作判断。
      

  5.   

    上传到文件,在数据库存地址。exe的话不知道能不能判断后缀,也就是最后个.后面的字符串
      

  6.   

    exe判断后缀没意义,改个后缀名一样再上传。
      

  7.   

    1.数据库用BLOB,存文本文件或二进制流文件都可以。楼上的楼上的楼上。。的楼上说的CLOB只能存纯文本文件。
    2.只要判断后缀就可以了,改了后缀它也执行不了。可以将所有的exe,com,bat,sh等等文件类型做个判断。或者允许它上传,但是传完了在你的系统里面都加上固定后缀。比如a.exe变成a.exe.mailattachment。
      

  8.   

    crazylaa 办法是个好点子。
      

  9.   


    晕,是上传不成功吧?写文件应该都成功的。
    上传用input type=file(就是那个smartupload里面用的),在文件比较大的情况下,数量一多网络又不咋滴的情况下就会失败。大文件批量上传要保证稳定性正确性,还是利用ActiveX(支持ftp或http并可以做到断点续传)或Java Applet(应该也可以做到断点续传)或ADODB.Stream(不知道能不能做到断点续传)来做比较好。
      

  10.   

    比如a.exe变成a.exe.mailattachment要是有人这样改了后缀了比如a.exe变成a.exe.mailattachment.exe
      

  11.   

    或者传一个.bat文件
    a.bat.mailattachment.bat
      

  12.   


    nono,不是这个意思,我的意思是,比如它改的文件名字符串一长串 
     String filename=“aaa.bb.cc”;
    那么我保存的时候,就
    filename += ".mailattachment";
    当然,filename最好用文件存在数据库的那个ID代替,我这里只是举个例子,就是不管他是什么,我反正最后给你加上这么一段。
      

  13.   

    最近在试java zip想把上传文件都压缩,可是zip的乱码又没有解决。